2014-11-04 4 views
-1

Я читаю текстовый файл, а затем сравниваю первую строку файла, которая является «abc», с строкой, которая является «abc», и они не оцениваются равными, хотя мой журнал показывает, что они одинаковы. (он выводит abc! = abc)string from istringstream getline, не сравнивая права

Что я заметил, если я делаю свой текстовый файл только одной строкой, то он оценивает, что они равны.

Я пробовал такие вещи, как использование strcmp или функцию сравнения, но я получаю те же результаты. Я также попытался сделать свою строку, я сравниваю ее с «abc \ n», и это тоже не сработало.

Вот мой код:

string testString = FileUtils::getInstance()->getStringFromFile("test.txt"); 
istringstream ss(testString); 
string s; 
string s2 = "abc"; 

getline(ss, s, '\n'); 

if(s == s2){ 
    CCLOG("%s","we are good..."); 
} 
else{ 
    CCLOG("%s!=%s", s.c_str(), s2.c_str()); 
} 
+1

Вы имели в виду '' \ n''? Я мог представить, что текущая формулировка кода считывает весь файл (или не скомпилируется). –

+0

да, извините, мой код имел \ n not/n – MikeC

+0

Возможно ли, что текст содержит «невидимый» символ, например, '' \ r''? Вы можете печатать размер строк чтения и печатать символы индивидуально, используя числовое значение для каждого или, по крайней мере, для неграфических символов. –

ответ

1

Обратите внимание, что строки моей содержать "невидимые" символы. Примечательно, что некоторые системы представляют собой конец строк, используя последовательность конца строки, например последовательность "\r\n". Если это так, строка может выглядеть одинаково, но также содержать возврат каретки. Вы можете проверить это печать строку следующим образом:

std::copy(s.begin(), s.end(), std::ostream_iterator<int>(std::cout, " ")); 

Если есть возврат каретки вы получите что-то вроде

97 98 99 13 

Несколько запутанным аспектом является то, что вы сказали, что выход вы видите

abc=abc 

Я бы ожидать, что это будет

=abc 

как выход будет

abc\r=abc 

'\r' и должен переместить курсор в начало строки. Если ваш CCLOG() не удаляет символы возврата каретки.

Смежные вопросы