写一个c++代码,将8进制转化为10进制,输入字符串长度最多为20位
时间: 2024-10-27 12:10:21 浏览: 26
以下是一个简单的C++代码片段,用于将输入的最多20位的8进制字符串转换为10进制整数。我们假设输入的字符串只包含有效的8进制数字('0'-'7'):
```cpp
#include <iostream>
#include <string>
// 函数用于将8进制字符串转换为10进制
long long octalToDecimal(const std::string &octalStr) {
long long decimal = 0;
int power = 0;
for (int i = octalStr.length() - 1; i >= 0; i--) {
if ('0' <= octalStr[i] && octalStr[i] <= '7') {
decimal += (octalStr[i] - '0') * pow(8, power);
power++;
} else {
// 检查输入不是有效的8进制数字
std::cerr << "Invalid input! Only 8-bit digits are allowed.\n";
return -1; // 或者抛出异常
}
}
return decimal;
}
int main() {
std::string input;
std::cout << "Enter an 8-digit octal number (up to 20 characters): ";
std::getline(std::cin, input);
// 调用函数并检查输入长度
if (input.length() > 20) {
std::cerr << "Input exceeds maximum length of 20 characters.\n";
return 0; // 或者返回错误代码
}
long long result = octalToDecimal(input);
if (result != -1) {
std::cout << "The decimal equivalent is: " << result << "\n";
}
return 0;
}
```
这个代码首先定义了一个函数`octalToDecimal`,遍历输入的字符串,每次取一个字符,并根据其位置计算对应8进制位的值,最后加到总和上。如果遇到非8位数字,程序会提示错误并退出。
在`main`函数中,用户输入一个最长20个字符的8进制字符串,然后调用`octalToDecimal`函数,如果转换成功则输出结果,否则给出相应错误信息。
阅读全文