有什么方法可以根据所使用的操作系统自动使用正确的EOL字符?

我在想类似std::eol的东西吗?

我知道使用预处理器指令非常容易,但是好奇是否已经可用。

我感兴趣的是,我通常在应用程序中包含一些消息,以后将它们合并为一个字符串,并希望将它们与EOL分开。我知道我可以使用std::stringstream << endl,但是有时候代替常规的追加似乎有点过分。

最佳答案

定义std::endl除了将'\n'写入流并将其刷新之外,什么都不做(第27.6.2.7节)。冲洗被定义为对stringstream不做任何事情,因此您可以用一种漂亮的方式表达mystringstream << '\n'。您操作系统上的标准库实现会正确转换\n,因此您不必担心。

因此,endl已经是性能和可移植性的终极选择,如果您想有效地写入文件(而不是字符串流),那么您唯一想要的其他就是<< '\n'。好吧,<< '\n'确实消除了对stringbuf::flush的毫无意义的虚拟调用。除非性能分析表明空函数调用需要花费时间,否则不要考虑它。

关于c++ - 便携式线尾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2520900/

10-12 16:08