не может сделать сравнение, принимая содержимое последовательности символов в строковую переменную C ++ - PullRequest
0 голосов
/ 23 ноября 2011

Во-первых, я изучаю C ++, и мне нужна ваша помощь по проблеме, которая у меня есть ... У меня есть следующий кусок кода:

std::string var2;
std::string MSG1="1";
char charSeq[1024];

cout << charSeq << endl;
var2 = charSeq;
cout << var2 << endl;

Вышесказанное делает для меня то, что я хочу: взять содержимое последовательности символов с именем charSeq и поместить их в строковую переменную с именем var2 Но когда я хочу сделать сравнение или любую операцию над строковой переменной var2, я не могу, например, если charSeq имеет значение 1, и я присвоил это значение var2, тогда я сделал сравнение между MSG и var2, результат всегда false, как var2 не имеет значения или имеет неправильное значение ...

if (var2==MSG1)
{
     // the code here never gets executed, even when the values are the same in var2 and MSG...
}
else
{
     // the result is always false and this condition executed no matter what var2 and MSG values were...
}

Можете ли вы помочь мне с некоторыми советами по этому вопросу?

1 Ответ

0 голосов
/ 24 ноября 2011

Прочитав комментарий от Сета выше (большое спасибо за подсказку), мне удалось решить проблему: у меня было 2 невидимых символа в charSeq, и они были скопированы в var2, это вызвалоложный результат сравнения, то, что я сделал:

cout << "charseq length: " << strlen(charSeq) << endl;
cout << "var2 length: " << var2.length() << endl;

var2.erase(var2.length()-2,var2.length()); //here is what i did...

cout << "var2 new length: " << var2.length() << endl; // the result was the correct length of the visible characters, and the comparison condition was executed...

Еще раз спасибо всем вам ...

...