如何使用wchar_t字符串?

时间:2012-03-31 19:09:35

标签: c++ wchar-t

  

可能重复:
  In C++, Why can't I write to a string literal while I can write to a string object?

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

wchar_t * my_string[] = L"Hello";
my_string[0] = L'Y'; // Should be "Yello". Instead, gives segmentation fault

[编辑] 没关系,我刚从自己做了个傻瓜。我会在互联网上查看其他地方。这是我的错,我不应该用这些愚蠢的问题困扰你......

1 个答案:

答案 0 :(得分:3)

您没有提供太多信息,但是,由于您谈到分段错误,最常见的错误来自内存管理功能通常在字节上工作而wchar_t的大小大于1。 / p>

当对char进行指针算术时,sizeof(char)几乎从不计入计数,因为根据定义它是1。但是wchar_t更宽,因此需要字节长度,必须放置sizeof(wchar_t)的乘法。

[编辑]抱歉,该示例与wchar_t本身无关:

wchat_t* my_string[]是一个wchar_t-pointers,其中第一个指向“Hello”,另一个未初始化。只需删除*。