gpt4 book ai didi

C++ 创建一个简单的 LPWSTR 数组

转载 作者:可可西里 更新时间:2023-11-01 10:01:15 25 4
gpt4 key购买 nike

作为一个 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”。不过,您根本不必显式分配或释放任何内存。

关于C++ 创建一个简单的 LPWSTR 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7048633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com