【发布时间】:2020-11-21 23:35:53
【问题描述】:
以下是我要从中读取行的文件(ka.txt):-
ASD|BSD|CSdsa|ood
fmads|aok|pdski
kdijf|okmdsomf|opkasd|okd
asdas
kamkd|aoda|kked|ok
以下是我为将这些数据放入 std::array<:string> 的向量而编写的代码。
#include <iostream>
#include <string>
#include <vector>
#include <array>
#include <fstream>
#include <sstream>
int main(){
std::fstream file("ka.txt");
std::vector<std::array<std::string, 4>> darr; darr.reserve(5);
std::array<std::string, 4> istd;
std::string * line = new std::string; std::string * word = new std::string;
while(std::getline(file, *line)){
std::stringstream ss(*line);
int per = 0;
while(!ss.eof()){
std::getline(ss, *&istd[per], '|');
per++;
}
darr.emplace_back(istd);
}
file.close();
for(int i = 0; i < darr.size(); i++){
for(int j = 0; j < 4; j++){
std::cout << darr[i][j] << "\t";
}
std::cout << "\n";
}
return 0;
}
基本上,我有一个具有std::array 的向量,每个std::array 的大小为4。所以我正在使用| 分隔符从文件中读取数据。我想将文本文件每一行中的每个元素存储为std::array。并将这些std::arrays 存储在一个向量中。另外,如果一行有 4 个元素,由| 分隔,那么std::array 中应该有四个元素。如果行中只有一个元素,那么std::array 中应该只有一个元素
所以当我运行这段代码时,我得到以下输出:-
ASD BSD CSdsa ood
fmads aok pdski
kdijf okmdsomf opkasd okd
asdas opkasd okd
kamkd aoda kked ok
所以,第四行有一个错误的std::array,因为它应该只有一个元素,但它应该只有一个。我怎样才能做到这一点?
另外,我认为可能的问题出在代码第 12 行开始的 while 循环中。
【问题讨论】:
-
绝对没有理由在这个程序中使用
new。 -
std::string line, word;-- 这就是你需要做的。 -
也可以将
*&istd[per]简称为istd[per]。
标签: c++ arrays c++11 while-loop