【发布时间】:2019-02-03 02:23:15
【问题描述】:
我正在编写一个程序,该程序通过标准输入接受输入,并根据输入执行操作。但是,与我自己的输入相比,输入的 txt 文件出现错误,我很好奇为什么。
std::string command;
std::getline(std::in, command); // first line is just "test"
if (command == "test")
{
//works when I enter text manually through keyboard, but not from file
}
if (command.compare("test") == 1)
{
//works reading the file
}
什么给了?这在我的程序中导致了一些逻辑错误,但从我所阅读的内容来看 == 和 .compare 应该没有那么不同。
有人知道如何解决这个可能的编码问题吗?
【问题讨论】:
-
显示文件内容。
-
您遇到的错误是什么?您可以编辑问题以包含错误的输出吗?
-
string::compare在字符串相等时返回 zero,因此“有效”是一个谎言。 -
不是谎言。 string::compare == 1 起作用的原因是因为总是有一个额外的 \r 字符。
-
该检查没有做它应该做的事情,即检查是否相等。它改为检查不等式。如果您的文件包含“whatever”或“zzzzz”或“teszt”,则检查将同样通过。因此它没有用。因此,“有效”是谎言。