如何从 LPWSTR** 转换为 std::vector<std::wstring>

How to convert from LPWSTR** to std::vector<std::wstring>

本文关键字:std lt wstring gt vector LPWSTR 转换      更新时间:2023-10-16

我有一个适用于 std::vector 的函数,像这样声明:

void MyFunc(std::vector<std::wstring> &vFillArray){
//....
//fill the vector with wstrings
//....
}

现在我想将我的函数导出到 DLL 库中并制作适用于 VB 6 应用程序。按原样使用该库会使 vb 6 应用程序崩溃。我必须将声明更改为 LPWSTR**(或我认为wchar_t**(,但现在,如何在我的 C++ 函数内部重新转换此类型?在内部,我使用 std::vector 用字符串填充向量。有什么建议吗?

假设LPWSTRwchar_t相同,你可以使用std::vector常用的迭代器赋值构造函数和函数:

wchar_t const *raw_data[] = {L"Hello", L"World", L"Test"};
std::vector<std::wstring> vec(raw_data, raw_data+2); // construct with first 2 elements
std::wcout << vec[0] << ' ' << vec[1] << 'n';
wchar_t const ** raw_ptr = raw_data;
vec.assign(raw_ptr, raw_ptr+3); // assing 3 elements
std::wcout << vec[0] << ' ' << vec[1] << ' ' << vec[2] << 'n';