stod的参数错误无效

时间:2016-10-10 13:26:00

标签: string c++11

我为以下代码行获取了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变量中的空格?

1 个答案:

答案 0 :(得分:2)

这里的问题是你有一个空单元格。没有从空转换为有效stod,因此while(std::getline(lineStream, cell, ',')) { if (!cell.empty()) cout<<stod(cell, &sz)<<endl; } 会引发一次重复。你需要做的是跳过像

这样的空单元格
tf.scatter_update