有没有办法编写一个跨平台解析器来读取字符,直到找到换行符?我在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;
}
答案 0 :(得分:6)
如果您正在使用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
从不视为换行符。
答案 1 :(得分:0)
C中的换行符是'\ n'而不是'\ 0'。它将被转换为当前平台使用的任何内容。