Moh*_*bil 0 c++ arrays string pointers strcpy
可能重复:
使用strcpy时访问冲突?
我遇到了一些困扰我的事情
char* p = "Hello";
strcpy (p,"bye");
这总是给我一个错误,那么我如何使用strcpy指针字符串.
(请没有人告诉我使用std :: string)
谢谢
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)
很简单!
| 归档时间: |
|
| 查看次数: |
3748 次 |
| 最近记录: |