尝试将字符串中的字符与回车符进行比较不起作用

时间:2018-07-14 22:27:55

标签: c++ string carriage-return

我有一些代码可以读取基于文本的文件格式,因为它使用以下命令检查空行:

line == ""

其中line是接收通过getline获得的文本行的字符串。

它适用于我自己的基于文本的文件格式,但不适用于其他基于文本的文件格式(不是我的)

我用gedit打开了文件,什么也没看到。越来越少的实用程序也什么也没显示。然后我尝试了vi,它显示:

到目前为止,所有这些行上的

^ M都似乎是空的(其屏幕截图位于Screenshot.png

进行了一些研究,似乎我以文本模式打开文件了,我要做的就是将它与'\ n'进行比较。所以我写了一行:

 if (line[0] == '^M' || line[0] == '\n') 
     break;

结束一个while循环,该循环中的“ if”位于其中,但是它没有用。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您已经猜到了,这些^M是vi向您显示每行末尾都有回车符的方式。该文件可能起源于Windows。

正如其他评论员所提到的,用C / C ++表示回车符的方式是'\r',并且该特定文件中的行尾几乎可以肯定地是\r\n(CRLF)。

因此,现在您知道其工作原理,您可以编写一些代码。 getline将删除\n,但您必须自己从行尾剥离\r(如果有)。转到它。