我想要打印\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";
}
答案 0 :(得分:3)
输出'\ n'或使用endl将产生完全相同的内容(唯一的区别是endl也会刷新)。当写入\ n字符时,如果文件处于“文本模式”,则运行时库会将其转换为平台的本机机制以指示行。在unix上,这是不必要的,因为该机制是一个\ n字节。在Windows上,\ n变为\ r \ n(回车,换行)。我怀疑你知道所有这些,但我正在审查它以防万一。
简而言之,只要为Windows设置运行时库,您拥有的代码就会按预期工作。我怀疑你正在使用cygwin的g ++或其他一些g ++端口,即使在文本模式下也没有为Windows风格的行设置。有些编辑不会正确解释未翻译的\ n。