C++中如何安全地从字符串转换为整数?
时间: 2024-09-18 18:00:59 浏览: 32
C++实现十六进制字符串转换为十进制整数的方法
在C++中,安全地从字符串转换为整数,通常建议使用`std::stoi`, `std::stol`, `std::stoll`等函数,取决于你要转换的整数类型(`int`, `long long`等)。这些函数会尝试解析输入的字符串,并返回相应的整数值。如果字符串无法转换为有效的整数(如包含非数字字符),这些函数会抛出异常,你可以捕获这些异常来处理错误情况。
例如:
```cpp
#include <iostream>
#include <string>
#include <stdexcept>
int main() {
try {
std::string str = "12345";
int num = std::stoi(str);
std::cout << "Converted number: " << num << std::endl;
} catch (const std::invalid_argument& e) {
std::cerr << "Invalid argument: " << e.what() << std::endl;
} catch (const std::out_of_range& e) {
std::cerr << "Out of range: " << e.what() << std::endl;
}
return 0;
}
```
这里,如果`str`不是一个有效的整数,`std::stoi`会抛出`std::invalid_argument`或`std::out_of_range`异常。
阅读全文