c++ - 从 vector<string> 转换为 wchar_t**

标签 c++

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/

相关文章:

c++ - bcp_init rturns 访问冲突

c++ - 'foo' 未在此范围内声明 c++

c++ - gtk 配置错误 - 找不到包 'atk-bridge-2.0'

c++ - Devil库使用中的错误

iphone - extern 在 Objective-C 中做了什么?

c++ - 筛链生成素数C++

c++ - 分配内存然后释放是否构成 C++ 程序中的副作用?

c++ - 无法从单独的类 C++ 访问类的成员

c++ - 设备或资源从头开始和 Alpine 在容器中忙碌,但不在 ubuntu 上

c++ - GCC 中树莓派的交叉编译。从哪儿开始?