作为C++菜鸟,即使我知道它应该很简单,我似乎也无法做到这一点:{-我需要创建一个LPWSTR数组,然后用唯一的字符串填充它。想法是做这样简单的事情:

LPWSTR *wszArray = new LPWSTR[5];

for(int x = 0; x < 5; x++)
{
    swprintf(wszArray[x], "somestring_%d", x);
}

我知道我还没有为LPWSTR分配内存,但是尝试了几件事之后,我的运气就不怎么好了。另外我不确定在完成字符串处理后是否应该释放数组。

任何建议都很好。

最佳答案

您现在拥有的是指向宽字符的单个指针。然后,使用5个动态分配的指向宽字符的指针的数组的地址进行初始化。就目前而言,这很好,但是不会为字符串本身分配任何空间,而仅为5个字符串的指针分配空间。然后,您需要为字符串本身分配空间:

for (int i=0; i<5; i++) {
    array[i] = new char[13];
    swprintf(array[i], L"somestring_%d", i);
}

是的,使用完毕后,您应该删除分配的空间。看起来像:
for (int i=0; i<5; i++)
    delete [] array[i];
delete [] array;

OTOH,您可能不应该执行任何此类操作,而应使用以下方法:
std::vector<std::wstring> array;

for (int i=0; i<5; i++) {
     std::wostringstream temp;
     temp << L"somestring_" << i;
     array.push_back(temp.str());
}

在这种情况下,您可以使用array[i].c_str()检索“LPWSTR”。不过,您根本不必显式分配或释放任何内存。

08-06 02:41