哪位大虾帮忙看下,此程序出错在哪里(编译后有结果,但是最后会响一声)
#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;
class CString
{
private:
char *p_str;//私有数据成员 p_str指针指向字符串
public:
CString(char* p_s)//构造函数 将参数值赋值给私有数据成员
{
p_str=new char[strlen(p_s)];
strcpy(p_str,p_s);
}
void print()
{
cout<<p_str<<endl;
}
~CString()
{
delete [] p_str;
}
};
int main()
{
char p[20];
CString* p_strPtr;
cout<<"Enter a string:";
cin>>p;
CString s1(p);
s1.print();
return 0;
}
[解决办法]
- C/C++ code
#include<iostream>#include<string.h>#include<math.h>using namespace std;class CString{private: char *p_str;//私有数据成员 p_str指针指向字符串public: CString(char* p_s)//构造函数 将参数值赋值给私有数据成员 { p_str=new char[strlen(p_s)+1]; strcpy(p_str,p_s); } void print() { cout<<p_str<<endl; } ~CString() { delete [] p_str; }};int main(){ char p[20]; CString* p_strPtr=NULL; cout<<"Enter a string:"; cin>>p; CString s1(p); s1.print(); return 0;}
[解决办法]
输入字符串的时,最后往往以“回车键”结束,如果不留够多一个变量的空间,就会出现访问越界的问题。
[解决办法]
只要每天都回复一个帖子,就会有10分,所以分从来不是问题。
结贴后会把问题点数的一半返还给你。