char* p_ar = new char[];
char* p_cr = new char[];
cout<<"请输入一个字符串";
首相,new一个数组要在中括号中说明数组的大小,具体原因不用多说,那都是库函数的问题,
不要深究,反正说明数组大小绝对不会错。其实当你学到一定程度,你可以轻易写出有类似功能的函数,所以不必深究库函数。
另外你的程序很不符合c++规范,strcpy(char* , char* )这是c库里面的,应#include
#include
你把#include
不知道楼主的代码是刻意为之,还是无意的写成的。
楼主代码的问题在于以下两句。
char* p_ar = new char[];
char* p_cr = new char[];
在C++中可以用new分配一个动态的数组,语法是
TypeName* array_pointer=new TypeName[Size_Of_Array];
TypeName就是类型名,在楼主的代码中就是char,
array_pointer就是变量名,在楼主代码中就是p_ar和p_cr,
Size_Of_Array就是数组大小,在楼主代码中没有写,编译器就认为是0(这是我认为的,至少在vs2005中是这样的,至于G++等编译器就不知道了)。
在C++中,可以分配一个元素个数为0的数组。
语法就是
TypeName* array_pointer=new TypeName[0];
或者
TypeName* array_pointer=new TypeName[];
这个元素个数为0的数组,可以创建成功,但是不可以访问的。
楼主的代码的问题就是动态创建了一个元素个数为0的数组,然后又去使用它。
至于元素个数为0的数组有什么用,我也不知道。鬼才知道C++为什么会有这个稀奇古怪的东东。
在C++ Primer这本书中有关于元素个数为0的数组的描述,但是也没有说清楚,看了也等于没看。
http://www.9wy.net/onlinebook/CPlusPlusPrimer/ch04lev1sec3.html
http://book.chinaunix.net/special//ebook/addisonWesley/CPP_Primer_4th/0201721481/ch04lev1sec3.html
It Is Legal to Dynamically Allocate an Empty Array这一节
你也不把错误信息发上来。。。个人认为开辟新的数组空间要加上具体的大小的,你把前两句指针指向的数组给个具体的大小试试。对C++不熟,不过如果指针开辟新的空间可以按照你那么写,那么也许strcpy那里会出错,这两个指针是同时开辟空间的,你又没有具体指出大小,有可能在strcpy的时候内存覆盖了。