有什么方法可以根据所使用的操作系统自动使用正确的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/