对char*的写权限

use*_*103 3 c++ char

Coincise问题:需要能够在c ++中修改char*的内容.

我有一个类似这样的函数:char*buffer =(char*)FUNCTION

现在我需要修改'缓冲',例如做这样的缓冲区[1] ="h";

我尝试过的是以下内容:char*string ="Hello World"; char buffer [65]; //我仍然需要知道确切的大小strcpy(buffer,string); buffer [1] ="r";

我也尝试过malloc.不幸的是,编译器总是抱怨以下内容:"无法从const char [2]转换为char".这发生在Windows上.我对g ++编译器没有这个问题.

我查看了以下链接,但仍然无法做任何事情. http://www.developerweb.net/forum/archive/index.php/t-3517.html 关于C中的字符指针 是否可以修改C中的字符串?

谢谢

Pup*_*ppy 5

由于您的问题被标记为C++,我必须质疑您使用原始字符*的意图,除非您非常自信,否则不建议使用.

其次,char*或char []完全有效修改.您遇到的问题是您在"Hello World"中创建了一个const char*,然后尝试使其中的一个字符等于一个字符串.字符不是字符串."r"是一个字符串,它是一个const char*.所以你试图将const char*等同于char,这是一个错误.你的意思是'r',这是一个char.

更好的代码是:

std::string mystring((char*)FUNCTION); // assume that FUNCTION
                                       // will free it's own memory.
if (index < mystring.size())
    mystring[index] = 'r';
// mystring now cleans up it's own memory in all cases.
Run Code Online (Sandbox Code Playgroud)