可能重复:
使用 strcpy 时访问冲突?
我遇到了困扰我的事情
char* p = "Hello";
strcpy (p,"bye");
这总是给我一个错误,那么我怎样才能将 strcpy 与指针字符串一起使用。
(请没有人告诉我使用 std::string)
谢谢
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.
很简单!
首先,您应该为您的字符串分配内存,如下所示:
char *p = new char[BUFFER_LENGTH];
然后您可以将内容复制到其中:
strcpy(p, "bye");
请参阅此页面了解如何使用它。
完成后不要忘记删除内存:
delete[] p;
如果我以错误的方式理解您的问题,您也可以提供更多信息