如何在C++中将字符串转换为整型数值?
时间: 2024-09-14 13:16:46 浏览: 48
在C++中,将字符串转换为整型数值通常有几种方法:
1. 使用`std::stoi`函数:
`std::stoi`函数可以将字符串转换为整数。这个函数定义在`<string>`头文件中,使用起来非常简单。如果字符串包含非数字字符或者转换结果超出整型的范围,则会抛出`std::invalid_argument`或`std::out_of_range`异常。
示例代码:
```cpp
#include <string>
#include <iostream>
int main() {
std::string str = "123";
try {
int num = std::stoi(str);
std::cout << "转换后的整数为: " << num << std::endl;
} catch (const std::exception& e) {
std::cout << "转换失败: " << e.what() << std::endl;
}
return 0;
}
```
2. 使用`atoi`函数:
`atoi`是C标准库函数,可以将C风格的字符串转换为整数。它定义在`<cstdlib>`头文件中。这个函数在遇到无法转换的字符时会停止转换并返回已经转换的整数值,不会抛出异常。
示例代码:
```cpp
#include <cstdlib>
#include <iostream>
int main() {
const char* cstr = "123";
int num = atoi(cstr);
std::cout << "转换后的整数为: " << num << std::endl;
return 0;
}
```
3. 使用`std::stringstream`:
`std::stringstream`是一种灵活的方式来实现类型转换。你可以将字符串读入到一个`stringstream`对象中,然后使用流提取操作符`>>`来提取整数。
示例代码:
```cpp
#include <sstream>
#include <iostream>
int main() {
std::string str = "123";
std::stringstream ss(str);
int num;
if (ss >> num) {
std::cout << "转换后的整数为: " << num << std::endl;
} else {
std::cout << "转换失败" << std::endl;
}
return 0;
}
```
阅读全文