我遇到了困扰我的事情
char* p = "Hello";
strcpy (p,"bye");
这总是给我一个错误,那么如何将strcpy与指针字符串一起使用。
(请没有人告诉我使用std :: string)
谢谢
答案 0 :(得分:7)
char* p = "Hello"; //BAD - OBSOLETE!
strcpy (p,"bye");
一个好的编译器应该在第一行给出你的警告(或错误),因为它已经过时,语言要求你把它写成:
char const * p = "Hello"; //GOOD
一旦你写了这个(无论如何这是写这个的正确方法),那么一切都变得清晰:p
指向 const 数据,意味着p
的数据指向无法 修改,这反过来暗示,您无法使用strcpy
(或手动)覆盖它。
如果要覆盖此内容,可以将p
声明为数组:
char p[] = "Hello"; //OK
strcpy (p,"bye"); //OK - for any string (2nd arg) of length <= 5
在C ++中,您应该使用std::string
,尽可能避免使用char*
和char[]
。因此,编写代码的C ++方法就是这样:
#include <string> //must include this first
std::string p = "Hello";
p = "bye"; //overwrite it.
这么简单!
答案 1 :(得分:2)
首先,你应该为你的字符串分配内存,如下所示:
char *p = new char[BUFFER_LENGTH];
然后你可以将内容复制到其中:
strcpy(p, "bye");
请参阅this page了解其使用方法。
完成后不要忘记删除内存:
delete[] p;
如果我以错误的方式理解您的问题,您还可以提供更多信息