【问题标题】:How to get argv as LPWSTR* and not char** from command line arguments?如何从命令行参数获取 argv 作为 LPWSTR* 而不是 char**?
【发布时间】:2021-09-08 12:33:22
【问题描述】:

我正在编写一个小型 C++ 程序,它从程序命令行获取输入,然后将字符串传递给另一个函数。

问题是这个函数期望得到一个LPWSTR(wchar_t*)类型变量,而regularchar** argv是一个来自@类型的元素数组987654329@.

有没有办法将 argv 变量作为 LPWSTR* 类型?

谢谢

【问题讨论】:

  • 您是在问如何将字符串char 转换为wchar_t 的字符串?也许这有帮助:stackoverflow.com/questions/11576846/…
  • @Jabberwocky 谢谢。这是另一种方法,但在 argv 数组的情况下,GetCommandLineWCommandLineToArgvW 似乎更简单。
  • 要将 argv 变量作为 LPWSTR*,使用 wmain 而不是 main
  • 您的选择:1 使用 wmain,正如 Raymond 所指出的那样。 2 使用 Microsoft 的 CRT 实现提供的符号 __argv, __wargv3GetCommandLineW 的返回值上调用CommandLineToArgvW

标签: c++ winapi argv unicode-string


【解决方案1】:

通过以下方式组合GetCommandLineW()CommandLineToArgvW() 可以实现一个简单的解决方案:

int main() {
    int argc = 0;
    LPWSTR* pArgvW = CommandLineToArgvW(GetCommandLineW(), &argc);
    // use pArgvW as needed...
    LocalFree(pArgvW);
    ...
    return 0;
}

阅读 GetCommandLineWCommandLineToArgvW 文档可能也会有所帮助。

【讨论】:

    猜你喜欢
    • 2020-05-19
    • 2015-04-08
    • 1970-01-01
    • 2011-08-14
    • 2016-01-25
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    相关资源
    最近更新 更多