cpp使用stl实现一个函数,传入一个数字字符串,返回一个int值,传入的字符串是10进制、16进制、2进制、8进制,需要在函数内部判断进制
时间: 2023-02-08 11:33:22 浏览: 161
以下是使用STL实现的C++函数,它接受一个数字字符串并返回一个int值。字符串可能是10进制、16进制、2进制或8进制。函数内部会自动判断进制。
```
#include <string>
#include <cstdlib>
int getIntValue(const std::string& str) {
int base = 10; // 默认为10进制
if (str.size() > 2 && str[0] == '0') {
if (str[1] == 'x' || str[1] == 'X') {
base = 16;
} else if (str[1] == 'b' || str[1] == 'B') {
base = 2;
} else {
base = 8;
}
}
char* endptr;
int result = std::strtol(str.c_str(), &endptr, base);
if (*endptr != '\0') {
// 字符串无法转换为整数
throw std::invalid_argument("Invalid input string");
}
return result;
}
```
使用方法
```
int value = getIntValue("1010");
// 10进制的1010
int value2 = getIntValue("0xA");
// 16进制的A
int value3 = getIntValue("0b1010");
// 2进制的1010
int value4 = getIntValue("012");
// 8进制的12
```
阅读全文