new & delete
以字符串处理函数为例,不调用string库里的函数,编写一个c++程序来实现字符串处理函数strlen的功能,代码如下:
//strlen//#include<iostream>using namespace std;class istrlen{ public: int number; char a[10]; char *p; istrlen(int initial); int count(); void f1();}; istrlen::istrlen(int initial){ number=initial; cin>>a; p=a;}int istrlen::count(){ while(*p!='\0'){ number++; p++; } return number;}void istrlen::f1(){ cout<<number<<endl;}int main(){ istrlen A(0); A.count(); A.f1(); system("pause");//DEVC++ make the result clear to see}
int size = 10; char *buf = new char[size+1]; int index = 0; istream_iterator<char> iter(cin); while(iter != istream_iterator<char>()){ buf[index++] = *iter++; if(index == size){ size = size>0?size<<1:1; char *newBuf = new char[size]; memcpy(newBuf,buf,index); delete []buf; buf = newBuf; } } buf[index] = 0;
[解决办法]
cin>>a
如果没有分配足够大,这里直接就错误退出了
你可以试试
char a[10]
cin>>a 然后输入超过11字符试试。