std::vector<std::string> elems = split(command, ' ');
const int argc = elems.size();
wchar_t** argv = new wchar_t*[argc]();
//wchar_t* argv[10];
for (int i = 0; i < argc; i++) {
const char* arg = elems[i].c_str();
int size = strlen(arg);
size_t length = 0;
wchar_t* e = new wchar_t[size];
mbstowcs_s(&length, e, size + 1, arg, size);
argv[i] = e;
}
这是我的代码,试图将字符串 vector 转换为 wchar_t**。当我注释掉第三行并取消注释第四行时,它起作用了。但我希望我的 wchar_t** 坚持下去,所以我想使用第三行而不是第四行。请向我解释为什么第三行没有按预期工作。
最佳答案
您正在分配 new wchar_t[size]
但将 size + 1
个字符复制到其中。这是未定义的行为。
关于c++ - 从 vector<string> 转换为 wchar_t**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44977703/