0

得到一个运行时错误,上面写着“在抛出std::bad_alloc.

    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();

编辑:应该已经澄清,itemNumb并且itemName是字符串向量,itemCost是双向量,并且itemQuant是整数向量。tempstr1和 2 是字符串,tempdoub是双精度数,tempint是整数。

4

1 回答 1

0

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

例如:

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++;
}
于 2013-05-17T15:49:11.157 回答