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

时间:2011-01-10 21:47:04

标签: c++ ofstream

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

所以我想知道是否有一些不同的方法在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 个答案:

答案 0 :(得分:3)

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

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