有没有办法编写一个跨平台的解析器来读取字符直到找到换行符?我在 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;
}
最佳答案
如果您正在使用 C++ 文本流(std::istream
和 std::ostream
,除非 ios_base::binary
打开文件流时已设置标志),然后 C++ 以平台无关的方式处理 \n
的输入和输出。
这意味着在 Windows 上读取包含 \r\n
的文件会将其视为 \n
,同样输出 \n
将输出特定于平台的换行符。
如果你需要读取连续的行,最简单的方法是使用getline
:
std::string line;
while (getline(std::cin, line)) {
// process line
}
\0
从不被视为换行符。
关于c++ - 可移植字符换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11204369/