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

What stod("5.000e-M1") should be answer?

本文关键字:答案 000e-M1 stod 什么      更新时间:2023-10-16

我运行此程序,

#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文件,如果我有" 5.000e-m1",我需要一个错误,而不是5.您知道具有这种行为的函数吗?

std::stod指定为调用 std::strtod。从后者的文档(重点是我的):

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

5.000e-M1不是有效的浮点表示,而是5.000,所以它取得了成功。