c++ string
c++ string求助
我想自己保存一个与源字符串无关的字符串,应该怎么实现?
我感觉上面写的应该没问题,可是运行会出错。
求高手解答。
------解决方案--------------------
关键在于charTmp = "hello world"这样的赋值不妥当,会导致delete失败,应该改为strcpy(charTmp, "hello world"),这样就不会出现charTmp被常量的歧义了。
------解决方案--------------------
我想自己保存一个与源字符串无关的字符串,应该怎么实现?
- C/C++ code
#include <string> #include <iostream> void main() { char* charTmp = new char[100]; charTmp = "hello world"; printf("%d\n",charTmp); printf("%s\n",charTmp); char* str1 = new char[100]; strcpy(str1,charTmp); delete []charTmp; printf("%d\n",str1); printf("%s\n",str1); delete []str1; system("pause"); }
我感觉上面写的应该没问题,可是运行会出错。
求高手解答。
------解决方案--------------------
关键在于charTmp = "hello world"这样的赋值不妥当,会导致delete失败,应该改为strcpy(charTmp, "hello world"),这样就不会出现charTmp被常量的歧义了。
------解决方案--------------------
- C/C++ code
#include <stdio.h> #include <string.h> int main(int argc, char* argv[]) { char* charTmp = new char[100]; //charTmp = "hello world"; strcpy(charTmp, "hello world"); printf("%d\n",charTmp); printf("%s\n",charTmp); char* str1 = new char[100]; strcpy(str1,charTmp); delete charTmp; printf("%d\n",str1); printf("%s\n",str1); delete str1; system("pause"); return 0; }
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
charTmp = "hello world";这句有问题啊,字符串不能这么赋值,要用memcpy或是strncpy之类的,你这样相当与直接修改指针变量的值,让它指向一个字符串常量了,所以在delete的时候就挂了,而且new的100个字符也没法释放了
------解决方案--------------------
你程序中最直接的错误就是delete charTmp;
因为你在给 charTmp赋值时是直接用“=”运算符,只是将 charTmp这个指针的指向改变了,使它指向了一个常量字符串的首地址,而常量字符串在只读区,所以你在delete 这个指针指向的区域时会出错。可以用strcopy或memcopy来赋值。