c++程序怎么错了

来源:百度知道 编辑:UC知道 时间:2024/07/04 14:03:52
#include<iostream.h>
class Inter_String{
int num;
char *s;
public:
Inter_String(int n){
num=n;
}
int f(){
int k=0;int m=num;
while(m){
m/=10;k++;
}

return k;
}
void fun(){
int i=f();int j=num;
s=new char[i+1];
while(j){
*s=j%10+'0';
j/=10;
s++;
}
*s='\0';
cout<<s<<endl;
}
void show(){
cout<<num<<endl<<s<<endl;
}
~Inter_String(){
if(s) delete[]s;
}
};
void main(){
Inter_String test(12345);
test.fun();
test.show();
}
是将整数转化为字符串的问题

你在fun函数里面改s的值了,最后s指向的是'\0'

改为用一个中间指针
void fun(){
int i=f();int j=num;
s=new char[i+1];
char *p=s;
while(j){
*p=j%10+'0';
j/=10;
p++;
}
*p='\0';
cout<<s<<endl;
}

不过你这样写转化的字符串是倒序的,个位在前,高位在后

有问题hi我

- -
整数转为字符串。。。。
可以用itoa(),也可以用sprintf。。。干嘛自己去重新造个不好用的轮子

class s{};////少了;

类声明结尾要有分号