什么stod(" 5.000e-M1")应该回答?

时间:2017-03-10 10:48:54

标签: c++ iostream

我运行这个程序,

#include <iostream>
int main(int argc, char *argv[])
{
    std::cout << std::stod("5.000e-M1") << std::endl;
}

我期待这个结果:

terminate called after throwing an instance of 'std::invalid_argument'
  what():  stod

但我获得了5分。 这对你来说是对的吗? 最诚挚的问候

我处理csv文件,如果我有&#34; 5.000e-M1&#34;我需要一个错误而不是5.你知道一个有这种行为的函数吗?

1 个答案:

答案 0 :(得分:6)

std::stod被指定为致电std::strtod。从后者的文件(强调我的):

  

函数会丢弃任何空白字符(由std::isspace()确定),直到找到第一个非空白字符。然后,它需要尽可能多的字符来形成有效的浮点表示并将它们转换为浮点值。

5.000e-M1不是有效的浮点表示,但5.000是,所以它需要并成功。