无法获取std :: from_chars来自动检测碱基

问题描述 投票:0回答:1

我正在尝试使用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);

现在这适用于十进制的selection_msg =“ 1234”,selection_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”解析得很好,但显然我无法解码解析出的十进制。

规范https://en.cppreference.com/w/cpp/utility/from_chars似乎建议“ 0x”应该是读错了的有效格式?

我希望使用自动碱基检测来使文件输入更加灵活。谁能看到我在做什么错?

P.S。全部在VS2019中测试。

c++ c++17
1个回答
1
投票

from_chars没有自动基准检测。这是一个非常低级的界面,旨在提高性能,而不是灵活性。

如果要自动检测,请使用stoi和朋友。

© www.soinside.com 2019 - 2024. All rights reserved.