2D数组来自文本输入,中间有空格

2D Array from text input with space inbetween

本文关键字:中间 空格 输入 文本 数组 2D      更新时间:2023-10-16

给定的文本输入

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
}

但我只能将每个单独的字符串元素存储到一个向量中。我怎么能取一整条线,把每个元素分割成一个向量,然后取整个向量形成一个2D向量?

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

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);
}