我为以下代码行获取了terminate called after throwing an instance of 'std::invalid_argument
stod
函数:
#include <iostream>
#include <string>
#include <sstream>
int main() {
std::string line = "5,,1,1,1";
std::stringstream lineStream(line);
std::string cell;
std::string::size_type sz;
while (std::getline(lineStream, cell, ','))
{
std::cout << std::stod(cell, &sz) << std::endl;
}
}
有人能指出我确切错误的原因吗?
提前致谢。
编辑:我注意到错误是因为空间&#34; &#34;两个逗号之间&#34;,&#34;在线。现在的问题是:getline
是否会返回cell
变量中的空格?
答案 0 :(得分:2)
这里的问题是你有一个空单元格。没有从空转换为有效stod
,因此while(std::getline(lineStream, cell, ','))
{
if (!cell.empty())
cout<<stod(cell, &sz)<<endl;
}
会引发一次重复。你需要做的是跳过像
tf.scatter_update