来自文本输入的2D数组,它们之间有空格

时间:2018-11-04 02:04:21

标签: c++

给出

的文本输入
Car 23 1
Pencil 54 12
Draw 
Ball 12

我想打印到2D向量中,例如:

vector<vector<string>> final_vec = {{Car,23,1},{Pencil,54,12},{Draw},{Ball,12}}

这是我到目前为止尝试过的:

#include<iostream>
#include<fstream>
#include<vector>
#include<string>

using std::cout; using std::endl;
using std::ifstream;
using std::vector;
using std::string;

void read_file(const string &fname) {
    ifstream in_file(fname);
    string token, line;
    vector<string> temp_vec;
    vector<vector<string>> final_vec;

    while ( getline(in_file, line) ) { //for each line in file
        while( in_file >> token ) { //for each element in line
            in_file >> token;
            temp_vec.push_back(token); 
        }
        final_vec.push_back(temp_vec);
        temp_vec.clear();
        }

    for(vector<string> vec:final_vec) {
        for(string ele:vec) {
            cout << ele << endl;
        }
    }
}

int main() {
    read_file("text.txt"); //insert your file path here
}

但是我只能将每个字符串元素存储到一个向量中。我怎么能整行地将每个元素分割成一个向量,然后再把整个向量形成一个二维向量?

1 个答案:

答案 0 :(得分:1)

您具有基本的结构,只需要创建字符串流并将其用于提取即可:

while (getline(in_file, line)) {
  stringstream ss(line);
  vector<string> temp_vec;
  string str;
  while (ss >> str) {
    temp_vec.push_back(str);
  }
  final_vec.push_back(temp_vec);
}