3

当我想打印出\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";
}
4

1 回答 1

3

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

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

于 2011-01-10T21:55:25.017 回答