1

可能重复:
在 C++ 中,为什么我不能写入字符串文字而我可以写入字符串对象?

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

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

[编辑] 没关系,我只是把自己弄傻了。我会在互联网上的其他地方检查。都是我的错,我不应该用这么愚蠢的问题来打扰你……

4

1 回答 1

3

您没有提供太多信息,但是,由于您谈论分段错误,最常见的错误源于内存管理函数通常在字节上工作而wchar_t大小大于 1 的事实。

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

[编辑] 抱歉,示例与自身无关wchar_t

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

于 2012-03-31T19:16:04.370 回答