C++ 将不同类型的行读入
文件格式如下所示:C++ 将不同类型的行读入,c++,input,inputstream,C++,Input,Inputstream,文件格式如下所示: A 1 2 3 B 1 2 3 ... struct Observation { string category; vector<int> variables; }; 我想在结构观察向量中读取它们,如下所示: A 1 2 3 B 1 2 3 ... struct Observation { string category; vector<int> variables; }; struct观察{ 字符串类别; 向量
A 1 2 3
B 1 2 3
...
struct Observation {
string category;
vector<int> variables;
};
我想在结构观察向量中读取它们,如下所示:
A 1 2 3
B 1 2 3
...
struct Observation {
string category;
vector<int> variables;
};
struct观察{
字符串类别;
向量变量;
};
我怎么读呢?我在这里搜索了一些解决方案,并尝试:
int main() {
ifstream infile("data.txt");
string line;
string category;
vector<Observation> obs;
int i = 0;
while(getline(infile, line)) {
istringstream iss(line);
iss >> category;
int j = 0;
int value;
while(iss >> value) {
obs[i].variables[j] = value;
j++;
}
i++;
}
}
intmain(){
ifstream-infle(“data.txt”);
弦线;
字符串类别;
向量obs;
int i=0;
while(getline(infle,line)){
istringstream iss(线);
iss>>类别;
int j=0;
int值;
而(iss>>值){
obs[i]。变量[j]=值;
j++;
}
i++;
}
}
但它说:错误:变量'std::istringstream iss'有初始值设定项,但类型不完整。我的编译器是Ubuntu 12.04上的g++4.6.3,使用命令“g++-std=c++0x io.cpp-g-o io”,请帮我解决这个问题,谢谢 尝试包括
,并更改添加到向量的方式:
while(iss >> value) {
obs[i].variables.push_back(value);
}
谢谢,它符合我的要求,但当我运行时,它会说“命令终止”可能有什么问题?@Bamqf你是如何运行你的程序的?这就是全部密码吗?您没有检查文件是否正确打开。你确定它没有丢失或什么吗?是的,它是所有的文件,除了包含,我用gdb跟踪它,它说:程序接收信号SIGSEGV,分段错误。0x0000000000401202在/usr/include/c++/4.6/bits/stl-vector.h:828 828如果(this->mu impl.\mu finish!=this->mu impl.\u end\u存储)哦,我明白了,obs必须使用push\u返回,我没有初始化,但使用obs[I]来获取它的元素,谢谢!