【发布时间】:2019-10-03 16:43:51
【问题描述】:
我正在尝试从文件中读取字符串并使用此字符串初始化对象(来自“Movimentacao”类型)并将这些对象放入向量中。为此,我必须将一些字符串转换为整数,但是当我尝试执行程序时,它会显示以下错误:
terminate called after throwing an instance of 'std::invalid_argument'
what(): stoi
代码可以正常编译,并且需要调试一些 couts,我发现循环执行了一次,但在第二次,它在“stoi”命令所在的行停止。
while(!mov.eof()){
getline(mov, dia, ',');
getline(mov, mes, ',');
getline(mov, ano, ',');
getline(mov, desc, ',');
getline(mov, sigla, ',');
getline(mov, val, ',');
sig = sigla[0];
Movimentacao M(stoi(dia), stoi(mes), stoi(ano), desc, sig, stod(val));
movi.push_back(M);
}
【问题讨论】:
-
正如错误所说,您对
stoi的输入无效。您需要确保要转换的内容是有效的int。 -
从代码中并不清楚具体是什么问题,但可能与Why is iostream::eof inside a loop condition (i.e.
while (!stream.eof())) considered wrong?有关,你应该确保每个getline都成功了。