我正在阅读一个文本文件,然后将文件的第一行(即" abc")与一个字符串" abc"进行比较。虽然我的日志声明显示它们是相同的,但它们并没有评估相等。 (它输出abc!= abc)
我注意到的是,如果我的文本文件只有一行,那么它会评估它们是否相等。
我尝试过使用strcmp或比较功能,但我得到的结果相同。我也试过制作我的字符串,我正在和#34; 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());
}
答案 0 :(得分:1)
请注意,字符串my包含“不可见”字符。值得注意的是,一些系统使用行结束序列表示行尾,例如"\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()
最终删除回车字符。