有一个字符串表示为一对迭代器或一个指针char
和一个长度。这条线的特殊之处在于它
- 可能包含一个数字,但只有一个;
- 可能包含错误值(额外字符或溢出的数字);
- 可能什么都没有(
begin+1 = end
)。
我所知道的 C 和 C++ 标准库函数atoi
,需要一个以 null 结尾std::stoi
的sscanf
字符串。C 和 C++ 库中是否有类似的标准函数?这些功能还需要:
- 该函数不得在堆上动态分配内存;
- 该函数不得使用 VLA;
- 该函数不得抛出异常。
虽然声明 IAR EWARM 8.40.1 支持 C++17,但它不std::string_view
包含std::from_chars
. 后者看起来是最合适的,尽管它没有写任何地方是否在堆上分配内存以满足内部需求。
在“复杂”的操作中,需要乘以十,可以用三班一加代替:
sscanf
可以做任何事情(顺便说一下,我没有检查 int 溢出):操场这是我对此类功能的实现。
其他类型可以类似地实现。