c++ - 可移植字符换行符

标签 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;
}

最佳答案

如果您正在使用 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 从不被视为换行符。

关于c++ - 可移植字符换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11204369/

相关文章:

c++ - 在 Linux 中正确部署 Qt 应用程序

c++ - 使用 C++ 获取 linux 机器的屏幕截图

c - C 中的全局变量是否是静态的?

c - 在 ARM Cortex M3 上实现非标准 SPI 变体

c - ESP8266数据通过PUT方法上传到Grovestreams

linux - 执行时出错-找不到所需的版本 `Qt_5'

C++ 前向声明类作用域枚举

c++ - `inline` , `constexpr` 或 `noexcept` 仅声明函数

mysql - 顺序数据的数据库

linux - 阻止 Linux 应用程序中的所有键盘输入(使用 Qt 或 Mono)