我无法弄清楚如何逐行读取文件到不同的数据类型向量。有没有办法用inFile>>来做到这一点?我的代码如下。提前谢谢!
void fileOpen()
{
fstream inFile;
inFile.open(userFile);
// Check if file open successful -- if so, process
if (!inFile.is_open()) {cout << "File could not be opened.";}
else
{
cout << "File is open.\n";
string firstLine;
string line;
vector<char> printMethod;
vector<string> shirtColor;
vector<string> orderID;
vector<string> region;
vector<int> charCount;
vector<int> numMedium;
vector<int> numLarge;
vector<int> numXL;
getline(inFile, firstLine); // get column headings out of the way
cout << firstLine << endl << endl;
while(inFile.good()) // while we are not at the end of the file, process
{
while(getline(inFile, line)) // get each line of the file separately
{
for (int i = 1; i < 50; i++)
{
inFile >> date >> printMethod.at(i);
cout << date << printMethod.at(i) << endl;
}
}
}
}
}
答案 0 :(得分:0)
在你的案例中使用vector.at(i)
之前,你应该确定你的向量足够长,因为at
会产生超出范围的异常。正如我从您的代码中看到的,您的向量printMethod
包含的元素不超过50个,因此您可以在使用之前调整向量printMethod
的大小。
vector<char> printMethod(50);
或
vector<char> printMethod;
printMethod.resize(50);
如果你计划使用超过50个可变数量的元素,你应该使用像@ Phil1970推荐的push_back方法。
char other_data;
inFile >> date >> other_data;
printMethod.push_back(other_data);