我们知道,在文件流中插入\n
时,系统的相应行尾序列将写入文件(例如Windows的\r\n
)。在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???
}
答案 0 :(得分:13)
系统特定的行结尾仅与文本文件相关。只要流只在内存中,它就是'\n'
。
答案 1 :(得分:3)
简短回答:否。
长答案:
文本模式下的文件流会将特定于平台的ELS插入到文件中。但是,当读取文件时,ELS会转换回\n
,因此应用程序永远不会看到这一点。因此,即使使用文件流(在文本模式下),您也永远不会看到ELS。
返回std::stringstream
。如果代码确实插入了特定于平台的ELS(它没有),那么当您读取流时,您仍然希望在读取它时看到\n
,因为您希望将ELS转换回来。这样做没什么意义。