怎么修改wchar_t *字符串在内存中的字符?

时间:2022-06-13 20:16:33
我有个字符串Local,假设=“abcdefg”,我现在想通过内存操作把最后的fg改成xy,谁知道怎么操作?
本人不太懂cpp,谢谢帮忙


size_t length = wcslen(Local); 
wchar_t * dst = new wchar_t[length];
wcscpy(dst, Local);

(&dst)[length - 1] = L"y";    //貌似不好使

这里怎么修改内存能让dst从“abcdefg”变成“abcdexy”,注意不是直接赋值之类的操作。

5 个解决方案

#1


size_t length = wcslen(Local); 
wchar_t * dst = new wchar_t[length+1];
wcscpy(dst, Local);
dst[length - 1] = L"y";

#2


引用 1 楼 paschen 的回复:
size_t length = wcslen(Local); 
wchar_t * dst = new wchar_t[length+1];
wcscpy(dst, Local);
dst[length - 1] = L"y";


最后一句提示:不能将const wchar_t * 类型的值分配到wchar_t类型的实体

这是什么问题?

#3


#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!

#4


我用memcpy解决了,谢谢各位

#5


引用 2 楼 liucqa 的回复:
Quote: 引用 1 楼 paschen 的回复:

size_t length = wcslen(Local); 
wchar_t * dst = new wchar_t[length+1];
wcscpy(dst, Local);
dst[length - 1] = L"y";


最后一句提示:不能将const wchar_t * 类型的值分配到wchar_t类型的实体

这是什么问题?


dst[length - 1] = L'y';  //单引号

#1


size_t length = wcslen(Local); 
wchar_t * dst = new wchar_t[length+1];
wcscpy(dst, Local);
dst[length - 1] = L"y";

#2


引用 1 楼 paschen 的回复:
size_t length = wcslen(Local); 
wchar_t * dst = new wchar_t[length+1];
wcscpy(dst, Local);
dst[length - 1] = L"y";


最后一句提示:不能将const wchar_t * 类型的值分配到wchar_t类型的实体

这是什么问题?

#3


#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!

#4


我用memcpy解决了,谢谢各位

#5


引用 2 楼 liucqa 的回复:
Quote: 引用 1 楼 paschen 的回复:

size_t length = wcslen(Local); 
wchar_t * dst = new wchar_t[length+1];
wcscpy(dst, Local);
dst[length - 1] = L"y";


最后一句提示:不能将const wchar_t * 类型的值分配到wchar_t类型的实体

这是什么问题?


dst[length - 1] = L'y';  //单引号