我正在尝试使用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中测试。
from_chars
没有自动基准检测。这是一个非常低级的界面,旨在提高性能,而不是灵活性。
如果要自动检测,请使用stoi
和朋友。