将数字从文件插入vector <vector <int>&gt;

时间:2018-01-15 13:09:53

标签: c++ vector std fstream getline

我想将每一行插入到矢量中。

我的文件如下:

file

问题是在getline中使用多个分隔符。 我的代码如下所示:

vector<int>czytajplik()
{
string line;
vector<string> text;
ifstream mojplik;
vector<vector<int>> zajecia;


mojplik.open("dane.txt");
if (mojplik.is_open())
{
    while (getline(mojplik, line))
    {

        while (getline(mojplik, line, ' '))
        {
            text.push_back(line);
        }
    }
    mojplik.close();
}

else cout << "Unable to open file" << endl;


vector<int> textnumery;
for (int i = 0; i <text.size(); i++)
{
    int num = atoi(text.at(i).c_str());
    textnumery.push_back(num);
}
return textnumery;

}

2 个答案:

答案 0 :(得分:1)

我将假设您的数据类似于

  

1 2 3 4 5

     

6 7 8 9 10

     

11 12 13 14 15

并希望将2d向量等于

vector<vector<int>> result = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 } };

然后你想要像

这样的东西
vector<vector<int>> zajecia;
ifstream mojplik("dane.txt");
if (mojplik.is_open())
{
    for (string line; getline(mojplik, line); )
    {
        stringstream numbers_stream(line);
        vector<int> numbers;
        for (int number; numbers_stream >> number; )
        {
            numbers.push_back(number);
        }
        zajecia.push_back(numbers);
    }
    mojplik.close();
}

答案 1 :(得分:0)

我认为这就是你的要求:

std::ifstream mojplik{"dane.txt"};
if (mojplik.is_open()) {

    std::vector<std::vector<int>> numbersLines{};

    for (std::string line; getline(mojplik, line);) {
        std::vector<int> numbersLine{};
        std::istringstream is(line);
        int num;
        while (is >> num) {
            numbersLine.push_back(num);
        }
        numbersLines.push_back(numbersLine);
    }
    mojplik.close();
}