wxWidgets将wchar_t**转换为char**

wxWidgets convert wchar_t** to char**

本文关键字:转换 char wchar wxWidgets      更新时间:2023-10-16

我正在尝试捕获应用程序argc &argv使用以下代码:

int       wx_argc = wxGetApp().argc;
wchar_t** wx_argv = wxGetApp().argv;

然后我需要把它传递给另一个需要argvchar**类型的函数,

如何将wx_argv类型从wchar_t**转换为char** ?

使用标准函数:

#include <stdlib.h>
wchar_t* p = L"Ciao Mondo";
char    v[50];
wcstombs(v, p, 10);

正确的答案取决于您需要哪种编码窄(char*)字符串。如果这是当前语言环境的编码,那么您确实可以使用@AngeloDM提到的wcstombs()。否则,您可以直接使用某些wxMBConv派生类的方法(例如wxMBConvUTF8wxMBConvUTF16用于特定编码或wxCSConv将尝试转换为您指定的任何支持的字符集)或通过wxString传递。

在任何情况下,这只处理从wchar_t*char*的转换,您仍然需要分配自己的argc大小的char**数组并循环遍历所有条目逐个转换它们。