看看我的test.txt是什么样的:
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
继承我的代码:
#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和stoi,但可能是错的。 逻辑在大多数情况下似乎是正确的。 提前致谢。
答案 0 :(得分:1)
使用std::stringstream
可以减少错误
while (getline(file, value))
{
std::stringstream ss(value); // must #include <sstream>
ss >> XYZ.x >> XYZ.y >> XYZ.z;
}
由于@Jonathan Potter的评论,你的代码现在无法运行。