Visual Studio 2010中提供stoi函数的原因

Why stoi function is available in Visual Studio 2010

本文关键字:函数 stoi Studio 2010 Visual      更新时间:2023-10-16

我不明白为什么<string>在VisualStudio2010(Platform Toolset=v100)中可用,因为文档中说这是C++11的一个功能。

有人能帮我理解一下吗?

我也想将其与GCC 4.4.7一起使用。。。。这是我的初衷。

C++11在2011年之前是一种草案方式。由于stoi()要将其纳入标准,许多编译器在C++11最终确定之前就已经添加了它。在C++11最终确定之前使用C++11功能是实验性的,因为一旦标准获得批准,情况可能会发生变化

运行

#include <iostream>
#include <string>
int main()
{
    int foo = std::stoi("5");
}

在godbolt.org上,GCC 4.4.7和-std=c++0x确实进行了编译,所以看起来你已经准备好使用它了

实时示例

允许编译器提供扩展和库函数,而这些扩展和库功能不是它们所针对的C++标准的一部分。虽然VC++2010并不完全符合C++11标准,但它确实支持C++11中的某些功能,而不是C++98中的某些功能(如autostatic_assert)。

使用这样的"前向兼容"功能会有一定的风险,因为编译器编写者所针对的标准草案可能在编译器发布后发生了变化,但到2010年,C++11已经变得相当稳定,而且stoi的规范在最终标准中几乎肯定与在VC++2010中实现的标准没有变化。

本页提供了有关哪些VC++版本支持哪些C++11功能的信息。

通常在采用最终版本之前很久就已经讨论过该标准。在讨论过程中,发布了《标准工作草案》等文件。

有时,在采用本标准的最终修订版之前,由于C++标准委员会的成员一致同意,一些特性将被包含在本标准中是很清楚的。

stoi不是一个语言功能(尽管VS2010已经对c++11的一些功能提供了一些最低限度的支持),而是一个库函数。碰巧的是,到那时,MS编译器团队已经在标准库的实现中实现了该函数。