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中的字符串?
谢谢
由于您的问题被标记为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)
| 归档时间: |
|
| 查看次数: |
377 次 |
| 最近记录: |