针对windows的Linux c++代码修改

Linux c++ code modification for windows

本文关键字:代码 修改 c++ Linux windows 针对      更新时间:2023-10-16

我主要使用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有回车符换行符("rn")。

如果您尝试在Windows系统上使用Linux(或者更确切地说是UNIX,因为这是它的来源)行尾读取文件,则不会识别行尾,它将被读取为一条长行。

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

通过对文本文件进行十六进制转储,可以很容易地验证这个问题,并查看该行是以0x0c 0x0a结尾还是仅以0x0a结尾。