运行时错误与文件io和向量(c++)

Runtime error with file io and vectors (C++)

本文关键字:c++ 向量 文件 io 运行时错误      更新时间:2023-10-16

得到一个运行时错误,说"终止调用后抛出实例的std::bad_alloc。"不知道怎么回事,我对c++还是个新手。

    do
    {
        getline(in_stream, tempstr1);
        itemNumb.push_back(tempstr1);
        getline(in_stream, tempstr2);
        itemNumb.push_back(tempstr2);
        in_stream >> tempdoub;
        itemCost.push_back(tempdoub);
        in_stream >> tempint;
        itemQuant.push_back(tempint);
        index++;
    } while (! in_stream.eof());
    in_stream.close();

Edit:应该澄清,itemNumbitemName是字符串向量,itemCost是双向量,itemQuant是整数向量。tempstr1和2为字符串,tempdoub为双精度类型,tempint为整型

如果任何输入操作失败,并且不是由于到达文件结束而导致的,则循环可能是无限的,这将最终导致内存耗尽。

例如:

in_stream >> tempdoub;

可能正在读取double。如果失败,流将被置于坏状态(设置了failbit),随后的读取将没有效果,并且永远不会到达文件结束。立即检查输入操作的结果:

while (getline(in_stream, tempstr1)
       && getline(in_stream, tempstr2)
       && in_stream >> tempdoub
       && in_stream >> tempint)
{
    itemNumb.push_back(tempstr1);   
    itemNumb.push_back(tempstr2);
    itemCost.push_back(tempdoub);
    itemQuant.push_back(tempint);
    index++;
}