istringstream getline中的字符串未正确进行比较
string from istringstream getline not comparing right
我正在读取一个文本文件,然后将文件的第一行"abc"与一个字符串"abc"进行比较,尽管我的日志语句显示它们是相同的,但它们的计算结果并不相等。(正在输出abc!=abc)
我注意到的是,如果我让我的文本文件只有一行,那么它会计算出它们是相等的。
我尝试过使用strcmp或compare函数之类的方法,但得到了相同的结果。我还试着把我的字符串比作"abc",但也没用。
这是我的代码:
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());
}
请注意,字符串可能包含"不可见"字符。值得注意的是,一些系统使用线端序列(例如"rn"
序列)来表示线端。如果是这种情况,字符串可能看起来相同,但也包含回车。你可以检查它打印字符串,如下所示:
std::copy(s.begin(), s.end(), std::ostream_iterator<int>(std::cout, " "));
如果有回车,你会得到类似的东西
97 98 99 13
有点令人困惑的是,你说你看到的输出是
abc=abc
我希望它是
=abc
因为输出将是
abcr=abc
并且CCD_ 2应当将光标重新定位在线的开始处。除非CCLOG()
最终删除回车符。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- Seg Fault Issue C++ (file IO / getline)
- 为什么比较运算符如此快速
- 我可以使用 g++ 进行三种比较 (<=>) 吗?
- 比较字符数组
- 将模板化的类型与C++中的某些类/类型进行比较
- C++自定义比较函数
- 如何比较自定义类的std::变体
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- std::设置自定义比较器
- 布尔比较运算符是如何在C++中工作的
- C++将目录中的所有文件与::filesystem进行比较
- 当用户键入分隔符时,停止getline()输入
- shell排序中的交换和比较
- 如何在C++中比较两个char数组
- 使用 getline(cin, var) 两次在进行字符串比较时会产生错误 (==)
- 我的 c++ 程序似乎没有发现字符串和我拥有但输入使用 getline 的变量之间的比较
- 比较字符串的 GetLine 工作一次,然后比较之后不起作用
- 在一段时间循环比较中实现 getline
- istringstream getline中的字符串未正确进行比较