C++ 如何使用wchar\t字符串?

C++ 如何使用wchar\t字符串?,c++,wchar-t,C++,Wchar T,可能重复: 我有了第一次使用wchar_t字符串的经验,我遇到了很多麻烦。每次我试图访问wchar_t*中的字符时,程序都会因分段错误而崩溃。如果我想用另一个字符替换字符串中的一个字符,该怎么办?但是当从字符串末尾删除字符时 wchar_t * my_string[] = L"Hello"; my_string[0] = L'Y'; // Should be "Yello". Instead, gives segmentation fault [编辑] 没关系,我只是做了个傻瓜。我将在互联网

可能重复:

我有了第一次使用wchar_t字符串的经验,我遇到了很多麻烦。每次我试图访问wchar_t*中的字符时,程序都会因分段错误而崩溃。如果我想用另一个字符替换字符串中的一个字符,该怎么办?但是当从字符串末尾删除字符时

wchar_t * my_string[] = L"Hello";
my_string[0] = L'Y'; // Should be "Yello". Instead, gives segmentation fault
[编辑]
没关系,我只是做了个傻瓜。我将在互联网上的其他地方查询。这是我的错,我不应该用这些愚蠢的问题来打扰你…

你没有提供太多的信息,但是,既然你谈到了分段错误,最常见的错误来自这样一个事实:内存管理函数通常在字节上工作,而
wchar\u t
的大小大于1

在对char执行指针算术时,几乎从不计算
sizeof(char)
,因为根据定义它是1。但是
wchar\u t
更宽,因此在需要字节长度的地方,必须将
sizeof(wchar\u t)
相乘

[编辑]抱歉,此示例与
wchar\t
本身无关:


wchat_t*my_string[]
是一系列wchar_t指针,第一个指针指向“Hello”,另一个指针未初始化。只需删除*

而不使用示例代码,这个问题比没用更糟糕。该代码甚至不合法。
my\u string[1]
的类型是
wchar\u t*
,不能将字符值分配给指针变量。你似乎也不了解基于零的索引。好吧,那我应该修改我的C语言知识,除非我想出丑。我知道基于零的索引,但我习惯于使用索引1中的其他类型的数组。我只是匆匆忙忙地在上面打了个错字。这是真的,我没有太多编程经验。我只是在上面添加了示例代码。。。谢谢你善意的回答。非常感谢你的帮助,我似乎只是在愚弄自己,炫耀我可怜的经历。但是如果我有一个函数,它的参数之一是wchar_t*(一个宽字符字符串),我想对它进行更改,那该怎么办?@PetruDimitriu wchar_t*在语义上与char*或int*没有区别。如果它指向10 wchar_t,并且您想更改第7个,只需执行ptr[6]=L';问题是,如果ptr指向一个文本(一个字符串常量),您就不能更改它,因为它是只读存储的。