Ниже приведен файл (ka.txt), из которого я хочу прочитать строки: -
ASD|BSD|CSdsa|ood
fmads|aok|pdski
kdijf|okmdsomf|opkasd|okd
asdas
kamkd|aoda|kked|ok
Ниже приведен код, который я написал для помещения этих данных в вектор std. :: массив .
#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::array
в одном векторе. Кроме того, если одна строка содержит 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
, поскольку он должен иметь только один элемент, а должен иметь только один. Как я могу этого добиться?
Кроме того, я думаю, что вероятная проблема заключается в while
l oop, которое начинается со строки 12 кода.