0

有没有办法编写一个跨平台解析器来读取字符直到找到换行符?我在 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;
}
4

2 回答 2

6

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

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

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

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

\0永远不会被视为换行符。

于 2012-06-26T09:40:02.057 回答
0

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

于 2012-06-26T09:32:05.557 回答