Я новичок в программировании и был бы признателен за любую помощь в решении моей текущей проблемы: я хотел бы прочитать два разных файла: inputA и inputB, где один имеет этот разделитель ':', а другой ','. Цель состоит в том, чтобы получить значения для inputA и inputB и объединить их для вывода C. Я был в состоянии прочитать файлы по отдельности (и добавить их в двухмерный, либо массив dataA или dataB). Но я хочу объединить два моих сценария в один. Таким образом, идея заключается в том, что inputA является открытым getline с использованием ':', затем сохраняет значения в dataA, а пока inputB является открытым getline с использованием ',' и сохраняет в dataB. Вот как мой скрипт выглядит более мягким для чтения либо inputA, либо inputB:
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
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, ':' )) // use ',' when inputB is supposed to be read
{
stringstream fs( field );
double f = 0.0;
fs >> f;
record.push_back( f );
}
return ins;
}
istream& operator >> ( istream& ins, data_t& data ) // here distinction between dataA or dataB?
{
data.clear();
record_t record;
while (ins >> record)
{
data.push_back( record );
}
return ins;
}
int main( int argc, char* argv[] )
{
data_t data;
ifstream infile( "inputA.pgm" ); // and inputB.csv should be here
infile >> data;
if (!infile.eof())
{
cout << "file could not be opened\n";
return 1;
}
{
infile.close();
//Output data
ofstream myfile;
myfile.open ("output.csv");
myfile << data[1][1] << "," << data[2][1] << "," << data[3][1] << "\n"; //output dataA
myfile << data[1][1] << "," << data[2][1] << "," << data[3][1] << "\n"; //output dataB
myfile.close();
return 0;
}
}
Спасибо!