使用fstream将文件逐行读取到C++中的二维向量中[重复]

Posted

技术标签:

【中文标题】使用fstream将文件逐行读取到C++中的二维向量中[重复]【英文标题】:Read file line by line using fstream into a 2d vector in C++ [duplicate] 【发布时间】:2020-11-06 17:38:55 【问题描述】:

input.txt文件的内容是:

45 15 87 12
12 48 878 7
11 25 85 44

注意:每行最后一个数字与换行符之间没有空格。 如何读取文件并将其内容存储为代表矩阵的二维向量。向量应如下所示:

    vector<vector<int>> vect
    
        45 15 87 12,
        12 48 878 7,
        11 25 85 44
    ;

描述一个 3x4 矩阵

【问题讨论】:

【参考方案1】:

编辑:经过测试和工作

#include <iostream>
#include <sstream>
#include <vector>
using namespace std;

int main() 
    istringstream input(R"(45 15 87 12
12 48 878 7
11 25 85 44)");

    vector<vector<int>> vect;
    // go through each line of file
    string line;
    while (getline(input, line)) 
        istringstream line_ss(line);
        vector<int> row;
        // go through each number on line
        for (int element; line_ss >> element;) 
            // insert number into row
            row.push_back(element);
        
        // insert row into vect
        vect.push_back(row);
    
    cout << "done" << endl;

应该希望是非常自我解释的,我使用 istringstream 而不是 ifstream 但两者都应该工作。如果您需要任何部分的解释,请告诉我。

编辑:其他人已将此链接到具有类似解决方案的帖子,因此请使用该帖子获取更多信息,并且似乎可以进行更多解释。

【讨论】:

以上是关于使用fstream将文件逐行读取到C++中的二维向量中[重复]的主要内容,如果未能解决你的问题,请参考以下文章

怎么用fstream读取文件里存的内容

C++ 如何将一个文件里的数据写入到另一个文件里?

使用 fstream 的替代方案

小白学习C++ 教程十八C++ 中文件处理

文件操作

infos