gpt4 book ai didi

c++ - Windows下的Linux C++代码修改

转载 作者:太空宇宙 更新时间:2023-11-04 05:40:25 26 4
gpt4 key购买 nike

我主要使用 Linux 进行开发,但 Windows 是办公室的标准操作系统。所以我写了一个简单的Windows环境下的文件操作代码。

以下代码(用于打印文件行)在 Linux 中运行良好,但在 Windows 中编译时,运行可执行文件后没有获得任何输出。

#include <iostream> 
#include <fstream>
#include <string>
int main()
{
std::ifstream stream;
stream.open("n.txt");

if(!stream)
{
std::cerr << "Rrror opening file.\n";
return 1;
}
std::string result;
while(std::getline(stream, result))
{
std::cout << result << endl;
}

return 0;
}

以下是我在Powershell中给出的编译命令:

g++ manip.cpp

文本文件n.txt如下:

*DLOAD
362521,P1,-0.000129208
362524,P2,-1.67058e-005
362525,P1,-0.000105441
362528,P2,-1.87842e-005
362529,P1,-0.000106145
362532,P2,-1.84522e-005
362533,P1,-0.000105311

如何使用现有编译器运行我的程序?

最佳答案

Windows 和 Linux 文本文件之间有一件事不同:它们的行结尾。 Linux 有纯换行符 ("\n"),而 Windows 有回车符换行符 ("\r\n")。

如果您尝试在 Windows 系统上读取具有 Linux(或 UNIX,因为它来自)行结尾的文件,则行结尾将无法被识别,并且它将被读取为单个长行。

Linux 端有一些实用程序可以转换行结尾(例如搜索 dos2unixunix2dos),并且当今大多数现代文本编辑器(在这两个系统上)也可以转换行结尾。

通过对文本文件进行十六进制转储并查看该行是否以 0x0c 0x0a 结尾或仅以 0x0a 结尾,可以轻松验证此问题。

关于c++ - Windows下的Linux C++代码修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23271770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com