Я пытаюсь извлечь два столбца данных из файла CSV и сбросить остальные.
Я получаю следующие ошибки:
C2296: '>>': недопустимый, левый операнд имеет тип 'std :: basic_istream> & (__ thiscall std :: basic_istream> :: *)(_Elem *, std :: streamsize) '
C3867:' std :: basic_istream> :: read ': нестандартный синтаксис;используйте '&', чтобы создать указатель на член
Данные отформатированы следующим образом:
1928,44.50%, .......
Я хочу1928 назначен в data.year, а 44.50% - в data.yield, но без учета знака процента.
bool ReadData(MyData &data)
{
//Variable for reading data into file stream
ifstream inFile;
string trash;
char junk;
cout << "\nReading file . . .";
//Open data file
inFile.open("Data.csv");
//Read the first 18 lines, and throw it away
for (int i = 0; i < 18; ++i)
{
getline(inFile, trash);
}
//Read the necessary data into the arrays
for (int i = 0; i < SIZE; ++i)
{
//===============================================================
//This line is throwing 2 errors
//Goal: read first column of a simple integer into data.year, discard the comma, then read the second column of a double into data.yield, discard the percentage sign. infile.ignore(); to clear cin stream, getline(inFile, trash) to discard remainder of the lines.
inFile.read >> data.year[i] >> junk >> data.yield[i] >> junk >> trash >> endl;
//===============================================================
inFile.ignore();
getline(inFile, trash);
}
//Return false if file could not be opened
if (!inFile)
{
cout << "\n\nTechnical error! The file could not be read.";
return false;
}
else
{
cout << "\n\nFile opened successfully!";
return true;
}
inFile.close();
}
struct MyData
{
int year[SIZE];
int yield[SIZE];
double minYield;
double maxYield;
double avgYield;
};
Куда я иду?