Вот что мой test.txt выглядит следующим образом:Чтение строк, разделенных пробелами в вектор в C++
18 19 20
21 22 23
22 23 24
23 24 25
24 25 26
25 26 27
28 29 30
29 30 31
Я хочу прочитать в целых чисел в виде строк test.txt затем создать вектор 3 Интс. Если это имеет смысл, поэтому выход вектор похожий:
18 19 20, 21 22 23, 22 23 24, 23 24 25, 24 25 26, 25 26 27, 28 29 30, 29 30 31
Heres мой код:
#include "test.txt"
#include <iostream>
#include <fstream>
#include <string>
#include <cctype>
#include <vector>
using namespace std;
struct M
{
int x;
int y;
int z;
};
int main(){
ifstream file;
file.open("test.txt");
string value;
M XYZ;
vector<M> Vec;
if (file){
while (getline(file, value)){
XYZ.x = stoi(value);
if (value == " ")
XYZ.y = stoi(value);
if (value == " ")
XYZ.z = stoi(value);
}
Vec.push_back(XYZ);
}
else
cout << "Error openning file." << endl;
for (int i = 0; i < Vec.size(); i++)
cout << Vec[i] << endl;
return 0;
}
Я думаю, что я использую GetLine и стои правильно, но может быть неправильным. Логика кажется правильной по большей части. Спасибо заранее.
... так в чем проблема? Какой у Вас вопрос? – Dai
Здравствуйте, добро пожаловать в StackOverflow! Расскажите, пожалуйста, какой у вас проблемы с кодом. Если это вопрос улучшения кода, тогда его лучше спросить в [CodeReview StackExchange] (http://codereview.stackexchange.com) –
Я бы заменил то, что находится внутри цикла 'while', с помощью' std :: stringstream ss; ', см. http://www.dreamincode.net/forums/topic/95826-stringstream-tutorial/, затем используйте 'ss' для заполнения структуры, например' ss >> XYZ.x >> XYZ.y >> XYZ .z; 'Таким образом, вам не нужно заботиться о пробелах и т. д. – vsoftco