0

我有一个代码如下。每当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");
4

2 回答 2

1

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

在 Windows 中,每个换行符\r后面是一个\n. 在 Linux 中,换行符就是 \n. 流默认以“文本模式”打开,它将系统换行符转换为\n. 因此,当您在 Windows 中读取文件时,它会\r很有帮助地删除。但是,Linux 并没有意识到它是换行符的一部分,因此\r像任何其他普通字符一样将"$Nodes".

于 2013-01-10T21:09:42.320 回答
0

删除std::cin.ignore();. 您实际上正在等待用户输入。在linux上测试。

于 2013-01-10T20:59:53.617 回答