将数字放在数组中的文件中

时间:2012-11-16 07:28:52

标签: c++ arrays

我有数字文件。

3
2 15 41
4 1 2 3 4
3 22 11 24

第一行显示其他行是如何存在的(最多100行)。 行中的数字不能超过50个。

行中的数字需要放入数组中,如:

line[lineNum][num]

我是C ++的新手,我要求以最简单的方式做到这一点。我试过了:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{
    int kiek;
    string str[100][50];
    string line;
    int a = 0;
    int b = 0;

    ifstream failas("Duom1.txt");

    if (failas.is_open())
    {                     
        while (failas)
        {
            if (a == 29)
            {
                  a = 0;
                  b++;
            }

            getline(failas, str[a][b], ' ');

        }

        a++;
    }

    cout << str[0][0] << endl;
}

1 个答案:

答案 0 :(得分:2)

逐行读取文件,然后单独解析每一行。

if (failas.is_open())
{
    // read first line
    string num_lines;
    std::getline(failas, num_lines);
    // read lines
    for (int i = 0; std::getline(failas, line); ++i)
    {
        // parse line and insert into array
        std::istringstream is(line);
        string number;
        for (int j = 0; is >> number; ++j)
            str[i][j] = number;
    }
}

更好的方法是使用std::vector而不是数组:

std::vector<std::vector<int> > all_nums;
...
// read first line
string num_lines;
std::getline(failas, num_lines);
// read lines
while (std::getline(failas, line)) {
    // parse line and insert into vector
    std::istringstream is(line);
    int number;
    std::vector<int> line_nums;
    while (is >> number)
        line_nums.push_back(number);

    // add line to vector
    all_nums.push_back(line_nums);
}