Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将不同类型的行读入_C++_Input_Inputstream - Fatal编程技术网

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]来获取它的元素,谢谢!