c++ - std::stoi 的基本参数

标签 c++ string c++11 atoi strtol

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。如果您在 Stackoverflow 上阅读了足够多的问题,就会看到这一点——许多初学者对以下规则感到困惑文字常量,并期望 int x = 010;x 初始化为 10。

关于c++ - std::stoi 的基本参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57790116/

相关文章:

c++ - 有没有比声明 CStringT<> 的 char 类型适当实例更好的方法

C++0x auto 无法推断出 vector<int> 成员函数指针的类型

string - 如何将文件的内容分配给正在进行的openge 4gl的字符串变量?

c++ - 如何配置 Clion 以使用 SDL2?

c++ - Boost 库中的编译失败(program_options)

c++ - 是否可以在静态库中编写COM代码,然后将其链接到DLL?

c++ - 如何在 C++ 中声明 wchar_t[] 的 vector ?

c++ - 从 `const char*[2]` 转换为 pair<string,string>

c++ - 用c++解析一个文件并忽略一些字符

multithreading - C++ 静态变量初始化和线程