ofstream无法在Linux的Windows子系统中生成新行

时间:2019-04-08 14:26:17

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

我正在尝试使用Windows子系统(用于Linux)编写.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;
}

我尝试用<< endl替换<< "\n"并修改ofstream命令like showed there,但没有任何效果;输出始终为First lineSecond line,而不是后续行的First lineSecond line。 此外,当我使用cout命令将输出打印到视频时,或者在cygwin上编译并运行该代码时,代码也能很好地运行。
是Linux的Windows子系统的问题还是我缺少重要的东西?

1 个答案:

答案 0 :(得分:1)

发表评论。

  

尝试用\ r \ n

替换<< endl

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

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