C++中将字符串以指定进制转化为十进制
时间: 2024-12-13 22:15:24 浏览: 52
在C++中,你可以使用std::stoi
函数将字符串转换成整数,这个函数默认是以10为基数的,也就是十进制。如果你想以其他进制(如二进制、八进制或十六进制)转换,你需要先确定字符串表示的数字系统,然后手动将其转换。
例如,如果你有一个表示二进制的字符串,你可以通过解析每个字符(通常是'0'或'1'),计算它们对应的权重,然后累加起来。这里是一个简单的示例:
#include <string>
#include <cmath>
int binaryToDecimal(const std::string &binary) {
int decimal = 0;
int base = 1;
for (int i = binary.size() - 1; i >= 0; --i) {
if (binary[i] == '1') {
decimal += base;
}
base *= 2;
}
return decimal;
}
在这个例子中,函数binaryToDecimal
从字符串的右端开始处理,每次乘以2并加1如果当前字符是'1'。
如果你想支持更广泛的进制转换,可以编写一个通用的函数,接受额外的参数指定基数:
template<int radix>
int stringToDecimal(const std::string &str) {
int result = 0;
for (size_t i = 0; i < str.length(); ++i) {
char c = str[i];
if (c >= '0' && c <= '9')
result = result * radix + static_cast<int>(c - '0');
else if (c >= 'A' && c <= 'Z')
result = result * radix + static_cast<int>('A' - '0' - 10);
else if (c >= 'a' && c <= 'z')
result = result * radix + static_cast<int>('a' - '0' - 10);
else
throw std::invalid_argument("Invalid character in the number");
}
return result;
}
// 使用示例,二进制转十进制
int decimal = stringToDecimal<2>("1010"); // decimal = 10
相关推荐


















