ofstream 未在 Windows 子系统中为 Linux 生成新行
ofstream not generating new lines in Windows subsystem for Linux
我正在尝试使用 Windows 子系统为 Linux 编写 .dat 文件,但 fstream 库似乎绕过了每个结束命令。
这是我的代码:
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;
}
我尝试用 << "\n"
替换 << endl
并修改 ofstream 命令 like showed there,但没有任何效果;在后续行中,输出始终是 First lineSecond line
而不是 First line
和 Second line
。
此外,当我使用 cout
命令将输出打印到视频时,或者当我在 cygwin 上编译并 运行 时,代码运行良好。
是 Linux 的 Windows 子系统的问题还是我遗漏了一些重要的东西?
通过评论。
Try substituting << endl with \r\n
这是由于linux和windows的行尾不同造成的。
在 windows 中你需要添加一个回车符 return 然后是换行符。
而在 linux 中则不需要回车 return。
问题是因为您正在为 linux 编译,所以 std::endl
将 linux 版本行放在结尾,但您试图在 [=19= 中查看输出].
我正在尝试使用 Windows 子系统为 Linux 编写 .dat 文件,但 fstream 库似乎绕过了每个结束命令。 这是我的代码:
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;
}
我尝试用 << "\n"
替换 << endl
并修改 ofstream 命令 like showed there,但没有任何效果;在后续行中,输出始终是 First lineSecond line
而不是 First line
和 Second line
。
此外,当我使用 cout
命令将输出打印到视频时,或者当我在 cygwin 上编译并 运行 时,代码运行良好。
是 Linux 的 Windows 子系统的问题还是我遗漏了一些重要的东西?
通过评论。
Try substituting << endl with \r\n
这是由于linux和windows的行尾不同造成的。
在 windows 中你需要添加一个回车符 return 然后是换行符。
而在 linux 中则不需要回车 return。
问题是因为您正在为 linux 编译,所以 std::endl
将 linux 版本行放在结尾,但您试图在 [=19= 中查看输出].