我有一些代码可以读取基于文本的文件格式,因为它使用以下命令检查空行:
line == ""
其中line是接收通过getline获得的文本行的字符串。
它适用于我自己的基于文本的文件格式,但不适用于其他基于文本的文件格式(不是我的)
我用gedit打开了文件,什么也没看到。越来越少的实用程序也什么也没显示。然后我尝试了vi,它显示:
到目前为止,所有这些行上的进行了一些研究,似乎我以文本模式打开文件了,我要做的就是将它与'\ n'进行比较。所以我写了一行:
if (line[0] == '^M' || line[0] == '\n')
break;
结束一个while循环,该循环中的“ if”位于其中,但是它没有用。我该怎么办?
答案 0 :(得分:0)
您已经猜到了,这些^M
是vi向您显示每行末尾都有回车符的方式。该文件可能起源于Windows。
正如其他评论员所提到的,用C / C ++表示回车符的方式是'\r'
,并且该特定文件中的行尾几乎可以肯定地是\r\n
(CRLF)。
因此,现在您知道其工作原理,您可以编写一些代码。 getline
将删除\n
,但您必须自己从行尾剥离\r
(如果有)。转到它。