OfStream不会在Windows7中打印出newline to txt7
题
我想打印出来时有一些问题 \n
我在用着 endl
为了那个原因。问题是当我在Windows7上运行代码时,它不会打印出Newline。但是它将在Ubuntu打印出Newline。两种操作系统都使用相同的编译器GNU G ++。
因此,我想知道是否有一些不同的方法可以打印在Windows中的Newline?
void translate(ofstream &out, const string &line, map<string, string> m)
{
stringstream ss(line);
string word;
while(ss >> word)
{
if(m[word].size() == 0)
out << "A";
else
out << m[word] << " ";
}
out << "\n";
}
解决方案
输出“ n'或使用endl”将导致完全相同的内容(唯一的区别是endl也潮红)。当写入该 n字符时,如果文件处于“文本模式”,则运行时库将其转换为平台的本机机制以指示行。在UNIX上,这是不必要的,因为该机制是 n字节。在Windows上, n变为 r n(返回马车返回,线馈电)。我怀疑您知道所有这一切,但我正在审查它,以防万一。
简而言之,只要您的运行时库已为Windows设置,您所拥有的代码将按照您的预期工作。我怀疑您使用的是Cygwin的G ++或其他一些G ++端口,即使在文本模式下,也无法为Windows风格的线进行设置。一些编辑不会正确解释未翻译的 n。
不隶属于 StackOverflow