字符串的比较不起作用

comparison of strings does not work

本文关键字:不起作用 比较 字符串      更新时间:2023-10-16

我有一个代码如下。无论何时temps = $Nodes回路应该结束。我在每次迭代中检查temps,并看到temps = $Nodes一次,但循环没有结束。这段代码适用于VS10,但不适用于linux。任何想法?

std::string temps;
s_mesh_file.open (mesh_file.c_str());
do
{
    getline (s_mesh_file, temps);
    std::cout << "temps: " << temps << std::endl;
    std::cin.ignore();
}
while (temps != "$Nodes");

他们使用相同的输入文件吗?包括Windows换行符吗?Linux不喜欢windows换行符。(Windows也不喜欢Linux)

在windows中,每个换行符都是r后跟n。在Linux中,换行符就是 n。流默认以"文本模式"打开,将系统换行符转换为n。因此,当您在Windows中读取文件时,它会有用地删除r。但是,Linux没有意识到它是换行符的一部分,因此将r像其他普通字符一样放在字符串的末尾,这使得它与硬编码的"$Nodes"不匹配。

删除std::cin.ignore();。实际上你在等待用户输入。