c++ - 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 line
First line
Second line
cout
解决方案
通过评论。
尝试用 \r\n 替换 << endl
这是由于linux和windows的行尾不同造成的。在 Windows 中,您需要添加回车符,然后添加换行符。
而在linux中则不需要回车。
问题来自于您正在为 linux 编译,因此std::endl
将 linux 版本行放在结尾,但您试图在 Windows 中查看输出。
推荐阅读
- python - 套接字聊天室 - python 3.7
- python - LinearSVC coef_ 属性
- php - 如何通过单击使用 PHP 的链接来获取文本文件中的数据
- amazon-web-services - 将本地 Spark 作业提交给 emr
- visual-c++ - 制作循环winsock服务器
- python - 从同级目录导入文件
- javascript - Lambda 没有向 API 网关返回带有 http 响应的正文
- logback - micronaut 可以使用 logback 记录访问日志吗?
- java - 无法从 OnTimeSetListener 调用字符串
- tfs - 构建步骤上的简单自定义条件不适用于 TFS