std::stoi 的基本参数
the base argument of std::stoi
c++的stoi
函数定义为:
int stoi(const std::string& str, std::size_t* pos = 0, int base = 10);
如您所见,base
参数默认为 10
,因此默认情况下它只能处理十进制数。通过将 base
设置为 0
,它可以通过前缀处理数字。这与 strtol
的行为相同,那么为什么默认值设置为 10
,而不是 0
?
我写了增加这些功能的提案。各种 stoX
转换函数的目标是提供 简单 转换。 Base 10 是迄今为止最常见的用法,应该是最简单的,因此是默认值。以 0 为基数会导致许多初学者的问题,即为什么转换字符串 "010"
不会产生 10。如果您在 Whosebug 上阅读了足够多的问题,就会看到这一点——许多初学者对文字常量的规则感到困惑,并期望int x = 010;
将 x
初始化为 10。
c++的stoi
函数定义为:
int stoi(const std::string& str, std::size_t* pos = 0, int base = 10);
如您所见,base
参数默认为 10
,因此默认情况下它只能处理十进制数。通过将 base
设置为 0
,它可以通过前缀处理数字。这与 strtol
的行为相同,那么为什么默认值设置为 10
,而不是 0
?
我写了增加这些功能的提案。各种 stoX
转换函数的目标是提供 简单 转换。 Base 10 是迄今为止最常见的用法,应该是最简单的,因此是默认值。以 0 为基数会导致许多初学者的问题,即为什么转换字符串 "010"
不会产生 10。如果您在 Whosebug 上阅读了足够多的问题,就会看到这一点——许多初学者对文字常量的规则感到困惑,并期望int x = 010;
将 x
初始化为 10。