一个很神奇的问题,望解答
2024-04-15 20:27:16
发布于:浙江
问题是这样的,这段代码的作用是把10进制转换成任意进制,因为要写成函数,函数返回不了char数组,所以用了string类型,但是我在主函数测试的时候输出,输出为空,什么都没有,后面我输出数组的大小,结果为0,但是我用下标输出单个,他又是对的,就很神奇,不知道这个str的大小为什么为0,希望有人能够解答,谢谢啦
代码:
#include <iostream>
using namespace std;
int main() {
int m, n;
string stri = "114514";
scanf("%d%d", &m, &n);
//m为数据,n为目标进制
string str;
int b[100000], num, i = 0,k = 0;
while (m > 0) {
num = m % n;
m /= n;
b[i++] = num;
}
//上面跳出循环前执行了 ++i 所以这里j = i-1; 且数组要反向
for (int j = i - 1; j >= 0; j--) {
if (b[j] > 9) {
str[k++] = char(b[j] + 55); //A:65
} else {
str[k++] = char(b[j] + 48);
}
}
cout << str.size() << " " << stri.size();
// for(int j = 0;j < str.size();j++) {
// cout << str[j];
// }
return 0;
}
我用的是CLion的IDE,苹果系统
全部评论 1
你的str一开始没有赋值,系统默认为空字符串。空字符串用索引赋值str[k++]是不行的。如果字符串一开始为空,你直接使用字符串拼接concatenate就可以了。或者直接往后加:str += char(b[i] + 55);
2024-04-16 来自
1啊,谢谢,成功了!!!
2024-04-16 来自 浙江
0
有帮助,赞一个