std :: stoi的基本参数

flu*_*ter 8 c++ string atoi strtol c++11

stoiC ++ 的功能定义为:

int stoi(const std::string& str, std::size_t* pos = 0, int base = 10);
Run Code Online (Sandbox Code Playgroud)

如您所见,该base参数默认为10,因此默认情况下它只能处理十进制数字。通过设置base0,它可以按数字的前缀处理数字。这与行为相同strtol,因此为什么将默认值设置为10而不是0

Pet*_*ker 15

我写了添加这些功能的建议。各种stoX转换功能的目的是提供简单的转换。到目前为止,Base 10是最常用的用法,应该是最简单的用法,因此是默认用法。以0为基数会引起许多初学者的疑问,为什么转换该字符串"010"不会产生10。如果您在Stackoverflow上阅读了足够多的问题,就会看到这一点-许多初学者对文字常量的规则感到困惑,并希望int x = 010;初始化x为10。