新版本c++中 stoi, 在老版本中用什么替换
时间: 2024-09-26 19:03:00 浏览: 29
在旧版 C++ 标准库中,并没有 `std::stoi` 这个直接的函数,如果你需要将字符串转换为整数,你可以使用 `atoi`、`strtol` 或者 `boost::lexical_cast<int>` 等替代方法。以下是几个例子:
1. **C语言风格** (C++98及更早版本):
```cpp
#include <cstdlib> // 包含 atoi 函数
int num = atoi("123");
```
2. **C++11 及以后** (C++03标准引入了 C-style 字符串转换函数):
```cpp
#include <cstring> // 包含 strtol 函数
char str[] = "456";
int num = strtol(str, nullptr, 10); // 第二个参数通常设置为nullptr表示忽略前导空格
```
3. **Boost库** (如果你使用的是 Boost 库,可以用 lexical_cast 替换):
```cpp
#include <boost/lexical_cast.hpp>
std::string str = "789";
int num = boost::lexical_cast<int>(str);
```
需要注意的是,`atoi` 和 `strtol` 对于非数字字符会抛出异常或返回不确定值,而 `boost::lexical_cast` 能提供更好的错误处理。在新版本的 C++(C++11及以上),推荐使用 `std::stoi` 以获得更现代且健壮的特性。
阅读全文