You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++如何从命令行参数获取LPWSTR*类型的argv而非char**类型

解决方案

方案1:使用Windows特有的宽字符入口函数(推荐)

Windows平台下可以直接使用wmain替换标准main作为程序入口,直接获取宽字符类型的参数数组:

#include <windows.h>

int wmain(int argc, LPWSTR argv[]) {
    // 此处argv本身就是LPWSTR*类型,无需额外转换
    LPWSTR targetParam = argv[1]; // 可直接传入要求LPWSTR入参的函数
    return 0;
}

使用该方案需确保编译器字符集设置为Unicode,微软Visual Studio等Windows平台开发工具默认已开启该配置。

方案2:标准main入口手动转换编码

如果需要保留标准char** argv的入口形式,可以使用Windows API MultiByteToWideChar完成多字节字符串到宽字符串的转换:

#include <windows.h>

int main(int argc, char** argv) {
    // 示例:转换所有参数生成LPWSTR*类型数组
    LPWSTR* wArgv = new LPWSTR[argc];
    for (int i = 0; i < argc; i++) {
        int wideLen = MultiByteToWideChar(CP_ACP, 0, argv[i], -1, NULL, 0);
        wArgv[i] = new WCHAR[wideLen];
        MultiByteToWideChar(CP_ACP, 0, argv[i], -1, wArgv[i], wideLen);
    }

    // 此处wArgv就是LPWSTR*类型,可直接使用
    LPWSTR targetParam = wArgv[1];

    // 使用完毕释放内存避免泄漏
    for (int i = 0; i < argc; i++) {
        delete[] wArgv[i];
    }
    delete[] wArgv;
    return 0;
}

内容的提问来源于stack exchange,提问作者Ohav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:51:03