我已经在Windows上的C ++中成功使用了以下代码(通过CodeBlocks),并且最近也尝试通过CodeBlocks在Linux(Ubuntu 18.04)上使用相同的代码。该代码似乎可以正常编译,但执行失败。
该代码的目的是将以逗号分隔的数字文本文件导入数组。
在Windows和Linux中,我都使用GNU GCC编译器。
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <cmath>
#include <iomanip>
#include <ctime>
#include <cstdio>
#include <stdlib.h>
using namespace std;
typedef vector <double> record_t;
typedef vector <record_t> data_t;
istream& operator >> ( istream& ins, record_t& record)
{
record.clear();
string line;
getline( ins, line );
stringstream ss( line );
string field;
while (getline( ss, field, ',' ))
{
stringstream fs( field );
double f = 0.0;
fs >> f;
record.push_back( f );
}
}
//-----------------------------------------------------------------------------
istream& operator >> ( istream& ins, data_t& data )
{
data.clear();
record_t record;
while (ins >> record)
{
data.push_back( record );
}
}
//-----------------------------------------------------------------------------
int main()
{
data_t data;
ifstream infile( "Import File.txt" );
infile >> data;
if (!infile.eof())
{
cout << "Unsuccessful Import!\n";
return 1;
}
infile.close();
/cout << "Your file contains " << data.size()-1 << " records.\n";
return 4321;
}
我已经检查了Linux上是否存在必需的头文件,而且似乎是这种情况。
如果我注释掉EOF,则控制台将返回以下消息:>
Process returned 49 (0x31)
非常感谢您找到解决方案的帮助。
我已经在Windows上的C ++中成功使用了以下代码(通过CodeBlocks),并且最近也尝试通过CodeBlocks在Linux(Ubuntu 18.04)上使用相同的代码。代码似乎对...
return 4321
中的main
向操作系统报告了失败的返回码。将其更改为return 0
。