首页 > 解决方案 > ofstream 没有在 Linux 的 Windows 子系统中生成新行

问题描述

我正在尝试使用适用于 Linux 的 Windows 子系统编写 .dat 文件,但 fstream 库似乎绕过了每个 endline 命令。这是我的代码:

int main()
{
   string fname = "DataSheet.dat";
   ofstream fdata (fname.c_str(), ios::out);

   fdata << "First line" << endl;
   fdata << "Second line" << endl;

   fdata.close();

   return = 0;
}

我尝试用那里显示的 ofstream 命令替换和修改<< endl,但没有任何效果;输出总是而不是在后续行上。此外,当我使用命令将输出打印到视频或在 cygwin 上编译和运行它时,代码运行良好。 是 Linux 的 Windows 子系统的问题,还是我遗漏了一些重要的东西?<< "\n"First lineSecond lineFirst lineSecond linecout

标签: c++windows-subsystem-for-linux

解决方案


通过评论。

尝试用 \r\n 替换 << endl

这是由于linux和windows的行尾不同造成的。在 Windows 中,您需要添加回车符,然后添加换行符。
而在linux中则不需要回车。

问题来自于您正在为 linux 编译,因此std::endl将 linux 版本行放在结尾,但您试图在 Windows 中查看输出。


推荐阅读