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

Der*_*f R 1 c++ iostream

我运行这个程序,

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

我期待这个结果:

terminate called after throwing an instance of 'std::invalid_argument'
  what():  stod
Run Code Online (Sandbox Code Playgroud)

但是我得到了5.这对你来说是对的吗?最好的祝福

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

Que*_*tin 6

std::stod被指定调用std::strtod.从后者的文件(强调我的):

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

5.000e-M1不是一个有效的浮点表示,但是5.000,它需要并成功.