C++ 无法将std::从_chars获取到自动检测基

C++ 无法将std::从_chars获取到自动检测基,c++,c++17,C++,C++17,我试图使用std::from_chars将std::string转换为整数,具体如下: //selection_msg is read from a file and is a std::string int selection_data; auto result = std::from_chars(selection_msg.data(), selection_msg.data() + selection_msg.size(), s

我试图使用std::from_chars将std::string转换为整数,具体如下:

//selection_msg is read from a file and is a std::string
int selection_data;
auto result =  std::from_chars(selection_msg.data(),
               selection_msg.data() + selection_msg.size(),
               selection_data);
现在,这适用于十进制选择项_msg=1234、选择项_data=1234和结果ec=0。 但是,如果selection_msg=0xABC,selection_data=0,则结果ec=0,但重要的是,ptr=xABC表示x不是已识别模式的一部分

注意:如果我添加基础:

auto result =  std::from_chars(selection_msg.data(),
               selection_msg.data() + selection_msg.size(),
               selection_data,
               16);
selection_msg=ABC解析很好,但显然我无法解码解析小数

规范似乎建议0x应该是一个有效的模式,我读错了吗

我希望使用auto base detection使文件输入更加灵活。 有人能看出我做错了什么吗


p.S.所有测试均在VS2019中进行。

对于from_chars,没有自动基准检测。这是一个非常低级的接口,设计用于性能,而不是灵活性


如果您想要自动检测,请使用stoi和friends。

我在该页面上没有看到任何关于自动基检测的内容。规范似乎建议0x应该是一个有效的模式,它的说法正好相反:期望模式与默认C语言环境中std::strtol使用的模式相同,并且给定的非零数字基,除了。。。对于base 16@nicolabolas,0x或0x前缀是不可识别的啊,我的理解是:如果您专门使用base 16,那么它是不可识别的!冷静,你的重点让我明白了!