2

我想要一个 wchar_t 数组。

以下作品:

char** stringArray;
int maxWords = 3;
stringArray = new char*[maxWords];
stringArray[0] = "I";
stringArray[1] = " Love ";
stringArray[2] = "C++"

但这并不

wchar_t ** wcAltFinalText;
wcAltFinalText = new wchar_t *[MAX_ALT_SOURCE];   // MAX_ALT_SOURCE = 4
wcAltFinalText[0] = L'\0';
wcAltFinalText[1] = L'\0';
wcAltFinalText[2] = L'\0';
wcAltFinalText[3] = L'\0';

我没有收到任何错误,但 wcAltFinalText 是一个错误的 ptr

非常感谢任何帮助和评论。

4

3 回答 3

7

您正在使用''而不是"",因此分配wcAltFinalText[0] = L'\0';等效于wcAltFinalText[0] = 0;

于 2011-03-14T12:37:59.180 回答
5
wcAltFinalText[0] = L'\0';

L'\0'是一个宽字符文字,这是一个整数类型 - 上面的行对应于

wcAltFinalText[0] = 0;

你想要的是一个字符串文字,L"\0";

于 2011-03-14T12:39:04.157 回答
2

好吧,您只需将新创建的数组中的所有元素都设置为空指针(因为L'\0'是“空字符”,而不是“空字符串”)——您还能期待什么?您与此代码具有相同的效果:

wcAltFinalText[0] = 0;
wcAltFinalText[1] = 0;
wcAltFinalText[2] = 0;
wcAltFinalText[3] = 0;

并且 Visual Studio 将空指针显示为“坏 ptr”,这意味着此类指针后面不能有任何数据。

于 2011-03-14T12:36:45.043 回答