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

Putting numbers in line from file in array

本文关键字:文件 数组 数字      更新时间:2023-10-16

我有数字文件。

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;
}

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

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);
}