字符串的比较不起作用
comparison of strings does not work
我有一个代码如下。无论何时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();
。实际上你在等待用户输入。
相关文章:
- 比较字符串的 GetLine 工作一次,然后比较之后不起作用
- 为什么当我们使用等于'='符号比较器函数时,c ++的内置排序函数不起作用?
- C 自定义比较器不起作用
- 伯克利数据库 Db->get 使用自定义比较函数时不起作用
- c++ 比较在缓冲区的 2 个字符串之间不起作用
- 为什么INT(char)的比较不起作用
- 排序功能不起作用(字符串比较问题)
- 为什么数组之间的==相等比较不起作用
- 为什么字符数组之间的这种比较不起作用?
- 我的自定义比较不起作用
- C++ 标准::查找自定义比较器不起作用
- 带有自定义比较器的映射不起作用
- 在 qt 中比较字符串不起作用
- std::排序和比较模板功能不起作用
- 我的字符串比较在 CPP 中不起作用
- 对的比较功能不起作用
- GNU使ifeq比较不起作用
- 为什么比较方法不起作用?
- std::使用函数作为比较器进行排序,不起作用
- 矢量元素和 txt 文件行之间的字符串比较不起作用