【问题标题】:Reading from .txt file into two dimensional array in c++从.txt文件读取到C++中的二维数组
【发布时间】:2016-08-11 00:58:15
【问题描述】:

所以要么我是个彻头彻尾的白痴,这让我眼前一亮,但我似乎无法在谷歌或这里找到任何我能理解的资源。

我有一个文本文件,其中包含几行整数,每个整数由一个空格分隔,我想将这些整数读入一个数组,其中每个新行是数组的第一个维度,每个整数在那一行被保存到第二个维度。

可能使用了最糟糕的术语来解释这一点,抱歉。

我的文本文件如下所示:

100 200 300 400 500
101 202 303 404 505
111 222 333 444 555

我希望得到的数组是这样的:

int myArray[3][5] = {{100, 200, 300, 400, 500},
                     {101, 202, 303, 404, 505},
                     {111, 222, 333, 444, 555}};

【问题讨论】:

  • 首先,拥抱你的 C++ 标准库并使用std::vector(几次)和一些流和字符串流处理。仅供参考,您的术语很好。 Something like this 是一种方式。

标签: c++ arrays file input


【解决方案1】:

我相信

istream inputStream;
int myArray[3][5];
for(int i = 0; i < 3; i++)
    for(int j = 0; j < 5; j++)
        istream >> myArray[i][j];

应该做你需要的。

【讨论】:

    【解决方案2】:

    在你的情况下,你可以这样做:

    ifstream file { "file.txt" };
    if (!file.is_open()) return -1;
    
    int my_array [3][5]{};
    for (int i{}; i != 3; ++i) {
        for (int j{}; j != 5; ++j) {
            file >> my_array[i][j];
        }
    }
    

    更好的方法是使用std::vector:

    vector<int> my_array;
    int num { 0 };
    while (file >> num)
        my_array.emplace_back(num);
    

    【讨论】:

    • 有点跑题了,但是好的 ol' int i = 0 有什么问题?
    猜你喜欢
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 2017-08-23
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    相关资源
    最近更新 更多