便携式字符换行

时间:2012-06-26 09:28:23

标签: c++ c qt stream newline

有没有办法编写一个跨平台解析器来读取字符,直到找到换行符?我在Linux中使用'\ 0',但我不确定这是否也可以在Windows上完成。

std::string line;
// fill the line
QTextStream ss(&line);

for(;;)
{
    ss >> c;
    if(c == '"' || c=='\0' ) // here I want to continue parsing until a new-line character or a ending double quote is found 
        break;
}

2 个答案:

答案 0 :(得分:6)

如果您正在使用C ++文本流(std::istreamstd::ostream,除非在打开文件流时设置了ios_base::binary标志,那么C ++会处理输入和输出\n以独立于平台的方式。

这意味着在Windows上读取包含\r\n的文件会将其视为\n,同样输出\n将输出特定于平台的换行符。

如果您需要阅读连续的行,最简单的方法是使用getline

std::string line;
while (getline(std::cin, line)) {
    // process line
}

\0 从不视为换行符。

答案 1 :(得分:0)

C中的换行符是'\ n'而不是'\ 0'。它将被转换为当前平台使用的任何内容。