stoi函数给出错误:std :: invalid_argument在内存位置0x0035E8D8。 C ++

时间:2015-08-10 20:37:36

标签: c++

程序运行正常,直到它进入stoi函数,然后程序中断并给我这个错误“Microsoft C ++异常:std :: invalid_argument在内存位置0x0030EE7C”。我看过使用stoi的教程,我不确定我做错了什么。平面文件如下所示:

Organic
7
description
light
4
description
menthol
5
description.

在新行上添加每个单词或数字。

struct ProdDescriptor
{
    string name;
    string price;
    string descript;

};
void getProds() // reads products off of the flat file
{
    int array = 3;
    ProdDescriptor x[3];
    ifstream ItemRead(FlatFileName); // object of the flat file
    string temp;

    if (ItemRead.is_open()) // opens flat file and reads
    {
        for (int i = 0; i < array; i++)
        {
            ProdSpecPrice[i] = 0; // initialize 

            getline(ItemRead, x[i].name);
            getline(ItemRead, x[i].price);
            getline(ItemRead, x[i].descript);

            temp = x[i].price;
            ProdSpecPrice[i] = stoi(temp);
            ProdSpecName[i] = x[i].name;
            ProdSpecDescription[i] = x[i].descript;
        }

1 个答案:

答案 0 :(得分:2)

reference documentation开始,必须要求std::stoi()抛出这些例外:

  

例外

     如果无法执行转换,则

std::invalid_argument   std::out_of_range如果转换后的值超出结果类型的范围,或者基础函数(std::strtolstd::strtoll)将errno设置为ERANGE

因此,此异常取决于您的实际输入,您目前未从您的问题中披露(不幸的是)。