C++:使用带指针字符串的Strcpy

Moh*_*bil 0 c++ arrays string pointers strcpy

可能重复:
使用strcpy时访问冲突?

我遇到了一些困扰我的事情

char* p = "Hello"; strcpy (p,"bye");

这总是给我一个错误,那么我如何使用strcpy指针字符串.

(请没有人告诉我使用std :: string)

谢谢

Naw*_*waz 7

char* p = "Hello";   //BAD - OBSOLETE!
strcpy (p,"bye");
Run Code Online (Sandbox Code Playgroud)

一个好的编译器应该在第一行给出警告(或错误),因为它已经过时了,语言要求你把它写成:

char const * p = "Hello";  //GOOD
Run Code Online (Sandbox Code Playgroud)

一旦你写的(这是写这个,反正正确的方法),那么一切都变得清晰:p指向常量数据,是指将数据p指向不能修改的,在转弯意味着,你不能使用覆盖它strcpy(或手动) .

如果要覆盖它,可以将一种方式声明p为数组:

char p[] = "Hello";  //OK
strcpy (p,"bye");    //OK - for any string (2nd arg) of length <= 5
Run Code Online (Sandbox Code Playgroud)

在C++中,你应该使用std::string,避免char*char[]尽可能多地.因此,编写代码的C++方法是这样的:

#include <string>   //must include this first

std::string p = "Hello";
p = "bye"; //overwrite it. 
Run Code Online (Sandbox Code Playgroud)

很简单!

  • @MohamedAhmedNabil:问题不是'strcpy`.您不能使用`const char*`或字符串文字作为目标. (3认同)