C ++将文件读入矢量

时间:2017-03-31 02:37:31

标签: c++ file vector

我无法弄清楚如何逐行读取文件到不同的数据类型向量。有没有办法用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;
               }

            }
        }

    }
}

1 个答案:

答案 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);