ofstream在Windows7中不打印出换行符到txt

问题描述:

我想打印出来时出现了一些问题\n我使用的是endl。问题是当我在Windows7上运行代码时,它不会打印出换行符。但它会在Ubuntu中打印出新行。两个操作系统都使用相同的编译器GNU g ++。ofstream在Windows7中不打印出换行符到txt

所以我想知道是否有一些不同的方式在Windows中打印换行文件?

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"; 
} 
+1

请发布一个我可以粘贴到我的编辑器并尝试的最小化,可编译的程序。 (也提供编译器和编译器版本。) – sbi 2011-01-10 21:53:16

+0

@sbi - cygwin g ++ 3.4.4 – starcorn 2011-01-10 22:00:04

地输出“\ n”或使用ENDL将导致完全相同的内容(唯一的区别是ENDL也刷新)。当写入\ n字符时,如果文件处于“文本模式”,则运行时库将其转换为平台的本机机制以指示行。在unix上,这是不必要的,因为该机制是一个\ n字节。在Windows上,\ n变为\ r \ n(回车,换行)。我怀疑你知道所有这些,但我正在审查它以防万一。

简而言之,只要您的运行时库设置为Windows,您的代码将按预期工作。我怀疑你正在使用cygwin的g ++或其他一些g ++端口,即使在文本模式下,它也没有为Windows风格的行设置。有些编辑不会正确解释未翻译的\ n。