【发布时间】:2011-10-15 11:25:38
【问题描述】:
我们知道,在文件流中插入\n 时,系统的适当行尾序列将写入文件(例如,\r\n 用于 Windows)。在std::stringstream 中插入结束行是否会导致将适合系统的行尾序列写入字符串?例如:
#include <sstream>
int main()
{
std::ostringstream oss;
oss << std::endl;
std::string endlineSequence = oss.str();
bool isWindows = enlineSequence == "\r\n";
bool isOldMac = endlineSequence == "\r";
bool isUnix = endlineSequence == "\n";
// Will this work???
}
【问题讨论】:
-
为了节省您的时间,您可以执行并查看程序中的所有
bools 是否都是true... 很可能isWindows和isMac将评估为@ 987654329@. -
@Aditya:我必须在每个平台上进行尝试。不是每个人都可以使用 Windows、Mac 和 Unix 机器。 :-)
-
@Emile:不,你只需要在 Windows 中尝试。因为如果你写
\n并得到\r\n,它会翻译成本地换行符;如果你得到\n它不会。但在 Linux 或 MacOS X 中并不明显。 -
在 windows 和 linux 机器上,isUnix 评估为真。
-
@Aditya:谢谢。这验证了 Björn 的回答。
标签: c++ newline stringstream end-of-line