我有这段代码:
char *charTable[] = { "test1", "test2", "test3" };
size_t originSize[] = { 6, 6, 6 };
wchar_t* textValues[3];
const size_t newsize = 100;
for (int i = 0; i < 3; i++) {
wchar_t wcstring[newsize];
size_t convertedChars = 0;
mbstowcs_s(&convertedChars, wcstring, originSize[i], charTable[i], _TRUNCATE);
wcscat_s(wcstring, L"");
textValues[i] = wcstring;
}
我希望将"test1"
,"test2"
,"test3"
放在textValues
wchar_t*
中,但在循环textValues
包含{{1}之后},"test3"
,"test3"
。
答案 0 :(得分:0)
首先,您需要将目标指针初始化为某些内容:
textValues[i] = new wchar_t[newsize];
然后,使用textValues[i] = wcstring;
:
wcscpy
(制作浅层副本)
wcscpy(textValues[i], wcstring);
或者使用更安全的wcscpy_s
:
wcscpy_s(textValues[i], newsize, wcstring);
最后,记住delete
新分配的内存,当你完成它时:
delete [] textValues[i];
完整样本:
char *charTable[] = { "test1", "test2", "test3" };
size_t originSize[] = { 6, 6, 6 };
wchar_t* textValues[3];
const size_t newsize = 100;
for (int i = 0; i < 3; i++) {
wchar_t wcstring[newsize];
size_t convertedChars = 0;
mbstowcs_s(&convertedChars, wcstring, originSize[i], charTable[i], _TRUNCATE);
wcscat_s(wcstring, L"");
textValues[i] = new wchar_t[newsize];
wcscpy_s(textValues[i], newsize, wcstring);
}
//later
for (int i = 0; i < 3; i++) {
delete [] textValues[i];
}