C++ 将数字从文件读入多维数组

C++ 将数字从文件读入多维数组,c++,multidimensional-array,C++,Multidimensional Array,我有一个.txt文件,其格式如下: 906 25 25 1997 25 25 900 25 25 1990 50 1.75 1981 50 50 925 25 25 我编写了以下代码来将数字读入数组: float numbers[1029][2]; std::ifstream fin; fin.open("GiftCardFinal.txt"); if (!fin.is_open()) { return 0; } for (int i = 0; i < 102

我有一个.txt文件,其格式如下:

906 25 25
1997 25 25
900 25 25
1990 50 1.75
1981 50 50
925 25 25
我编写了以下代码来将数字读入数组:

float numbers[1029][2];
std::ifstream fin;
fin.open("GiftCardFinal.txt");
if (!fin.is_open())
{
    return 0;
}
for (int i = 0; i < 1029; i++)
{
    for (int j = 0; j < 3; j++)
    {
        fin >> numbers[i][j];
    }
    
}
fin.close();
是否有人可以对此提供帮助或建议我可以改进什么?

尝试运行以下代码:

#include <iostream>
#include <fstream>  
using namespace std;

#define NUM_LINE 10000

int main()
{
    float numbers[NUM_LINE][3];
    std::ifstream fin;
    fin.open("GiftCardFinal.txt");
    if (!fin.is_open())
    {
        return 0;
    }
    for (int i = 0; i < NUM_LINE; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            fin >> numbers[i][j];
        }
        
    }
    fin.close();
    
    for (int i = 0; i < NUM_LINE; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            cout << numbers[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

将第二维度增加到3可能是一个好的开始。
std::cout我最初确实将其设置为3。当我不明白为什么它不工作时,我把它改成了2。将它设置为3会导致以下输出:906 25 1997 25 900当你将第二维度设置为3时,你的内部循环没有填充第二维度。尝试
j<3
它必须读取~1000行和3列,每次更新我的代码。如果您已经知道输入文件中的行数,则可以更改
NUM_LINE
的值。检查是否事先不知道输入文件中的行数。for循环与原始循环有何不同?谢谢你的帮助我将代码更改点从三行改为一行。检查
数字
数组声明和外部循环。现在您只需要更改
#define NUM_LINE 10000
中的行数值。您的代码不起作用,因为您用错误的维度声明了
数字
数组。它应该是
1029x3
906 25 25

25 1997 25
#include <iostream>
#include <fstream>  
using namespace std;

#define NUM_LINE 10000

int main()
{
    float numbers[NUM_LINE][3];
    std::ifstream fin;
    fin.open("GiftCardFinal.txt");
    if (!fin.is_open())
    {
        return 0;
    }
    for (int i = 0; i < NUM_LINE; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            fin >> numbers[i][j];
        }
        
    }
    fin.close();
    
    for (int i = 0; i < NUM_LINE; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            cout << numbers[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}
906 25 25
1997 25 25
900 25 25
1990 50 1.75
1981 50 50
925 25 25