C ++获取EOL的大小(以字节为单位)

时间:2016-01-05 07:35:15

标签: c++ newline eol

我正在读取ASCII文本文件。它由每个字段的大小定义,以字节为单位。例如。每行由一些字符串组成10个字节,浮点值为8个字节,整数为5个字节,依此类推。

我的问题是读取换行符,取决于操作系统的大小可变(通常为2个字节用于Windows,1个字节用于linux,我相信)。

如何在C ++中获取EOL字符的大小?

例如,在python中,我可以这样做:

len(os.linesep)

2 个答案:

答案 0 :(得分:1)

执行此操作的时间方法是阅读一行。

现在,最后一个字符应为\n。脱掉它。然后,看看前一个字符。它将是\r或其他内容。如果是\r,请删除它。

对于Windows [ascii]文本文件,没有任何其他可能性。

即使文件是混合的(例如,某些行是\r\n而某些行只是\n),这也可以。

你可以暂时在几行上做到这一点,只是为了确保你没有处理奇怪的事情。

之后,您现在知道对大多数文件有什么期望。但是,条带法是一般可靠的方法。在Windows上,您可以从Unix导入文件(反之亦然)。

答案 1 :(得分:0)

我不确定翻译是否发生在你认为的地方。请查看以下代码:

ostringstream buf;
buf<< std::endl;
string s = buf.str();
int i = strlen(s.c_str());

在此之后,在Windows上运行,i == 1.因此std中的行结束定义为1个字符。正如其他人评论的那样,这就是&#34; \ n&#34;字符。

相关问题