首页 > 解决方案 > 如何将文本文件传递到 C++ 中的二维数组?

问题描述

我需要将包含逗号分隔整数的文本文件传递到 C++ 中的二维数组中。例如,如果文本文件看起来像:

2,3,56,4
3,5,7,1
0,23,9,87
2,4,5,2

我需要把它放到一个二维数组中,以便我以后可以执行计算(我知道该怎么做)。我有以下代码,但我非常挣扎。任何帮助,将不胜感激。谢谢你。

#include <iostream> 
#include <sstream>
#include <string>
#include <fstream>
using namespace std;
int main()
{

    const int row =4;
    const int col =4;
    int array[row][col];
    int r =0;
    int c =0;

    ifstream inputfile("numbers.txt");
    if (!inputfile.is_open())
    {
        cout<<"error"<<endl;
    }
    string line,num;
    int number;
    while(get line(inputfile,line))
    {
        string stream ss(line);
        getline(ss,num,',');
        number = stoi(num);

        for (int r=0; r<row;r++)
        {
            for (int c=0; c<col; c++)
            {
                array[row][col] =number;
            }
        }


        inputfile.close();
        return 0;
    }

标签: c++arraysmultidimensional-arraytext-filescsv

解决方案


这是一个简单的例子:

static const int MAX_ROWS = 4;
static const int MAX_COLUMNS] = 4;
int matrix[MAX_ROWS][MAX_COLUMNS];
//...
for (int row = 0; row < MAX_ROWS; ++ row)
{
    std::string row_text;
    std::getline(inputfile, row_text);
    std::istringstream row_stream(row_text);
    for (int column = 0; column < MAX_COLUMNS; ++column)
    {
       int number;
       char delimiter;
       row_stream >> number >> delimiter;
       matrix[row][column] = number;
    }
}

以上假设文本文件包含确切数量的数字。

由于行尾的分隔符不同,因此每行都作为字符串读取,然后用于std::istringstream将流视为文件。


推荐阅读