Joh*_*ohn 14 c unicode command-line-arguments
我正在为一个使用文件作为参数的应用程序编写一个小包装器.
包装器需要是Unicode,所以我使用wchar_t作为我拥有的字符和字符串.现在我发现自己遇到了问题,我需要在wchar_t和wchar_t字符串数组中包含程序的参数.
可能吗?我将main
函数定义为
int main(int argc, char *argv[])
Run Code Online (Sandbox Code Playgroud)
我应该使用wchar_t argv
吗?
非常感谢,我似乎没有找到有关如何在C中正确使用Unicode的有用信息.
Jon*_*ler 11
一般来说,没有.它取决于O/S,但C标准说'main()'的参数必须是'main(int argc,char**argv)'或等价,所以除非char和wchar_t是相同的基本类型,你不能这样做.
话虽如此,你可以在程序中获得UTF-8参数字符串,将它们转换为UTF-16或UTF-32,然后继续生活.
在Mac(10.5.8,Leopard)上,我得到了:
Osiris JL: echo "ï€" | odx
0x0000: C3 AF E2 82 AC 0A ......
0x0006:
Osiris JL:
Run Code Online (Sandbox Code Playgroud)
这都是UTF-8编码的.(odx是一个十六进制转储程序).
另请参阅:为什么在与UNIX/Linux环境交互时使用UTF-8编码
在Windows上,即使应用程序未针对Unicode编译,您也可以使用GetCommandLineW()
和CommandLineToArgvW()
生成argv样式的wchar_t[]
数组.