C++ 从文件读取错误(读取0或“值”)

C++ 从文件读取错误(读取0或“值”),c++,string,file,constructor,stream,C++,String,File,Constructor,Stream,这是我的类的定义: class BPP { unsigned n; /* nº de instancias */ vector<string> nombre_instancia; /* nombre de la instancia*/ vector<unsigned> n_objetos; /* nº de objetos a almacenar en c

这是我的类的定义:

class BPP
{
    unsigned            n;                  /* nº de instancias */
    vector<string>      nombre_instancia;   /* nombre de la instancia*/
    vector<unsigned>    n_objetos;          /* nº de objetos a almacenar en cada instancia */
    vector<unsigned>    C;          /* capacidad máxima de cada contenedor */
    vector<unsigned>    mejor;              /* mejor nº mínimo de contenedores usados (m*) */
    vector< vector<unsigned> > tam_objeto;

输出为所有读取的值均为0(如果无符号)或“”(如果字符串)

问题在于
10
后面的新行字符未被以下用户使用:

file1 >> (unsigned &) n; // Why the cast here?
这意味着
getline(file1,str)
调用只读取新行字符,即空行。下一个输入操作是:

file1 >> a;
由于
p_0
不是有效的
unsigned int
,因此失败。此故障会阻止进一步读取
文件1
流(已设置)。 要解决这个问题,只需调用两次
getline()
,忽略第一次调用的结果


检查所有读取的结果以检测故障。这样做会提醒您读取失败。

我不知道您说了什么,但仍然不起作用。两次调用getline()会导致分段错误,甚至忽略它的结果(不要存储在变量中)@freinn,您需要将变量传递到
getline()
,但之后忽略它的值;getline(file1,str);名为instancia.向后推(str)@freinn,我刚刚仔细检查了一下,这是一个问题的解决方案。检查发生故障时要定位的读取结果:
if(file1>>a){//ok}else{//notok}
是否有方法忽略第一个空格,一步读取该行??现在它工作了,我已经完成了
getline(file1,str,'\n');getline(文件1,str,'\n')
file1 >> (unsigned &) n; // Why the cast here?
file1 >> a;