程序运行正常,直到它进入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;
}
答案 0 :(得分:2)
从reference documentation开始,必须要求std::stoi()
抛出这些例外:
例外
如果无法执行转换,则
std::invalid_argument
std::out_of_range
如果转换后的值超出结果类型的范围,或者基础函数(std::strtol
或std::strtoll
)将errno
设置为ERANGE
。
因此,此异常取决于您的实际输入,您目前未从您的问题中披露(不幸的是)。