gpt4 book ai didi

c - 如何在 Win32 命令行应用程序中将 argv 转换为宽字符?

转载 作者:太空狗 更新时间:2023-10-29 16:09:11 25 4
gpt4 key购买 nike

我在我的程序中使用 C 的 win32 api 从串行端口读取数据,这似乎是非常低级的东西。假设没有更好的从串行端口读取的方法,CreateFile 函数涉及一个 LPCWSTR 参数,我读过它看起来 LPCWSTR 是一个 wchar_t 类型。首先,我真的不明白 wchar 和 char 之间的区别,我读过关于 ansi 和 unicode 的东西,但我真的不知道它如何适用于我的情况。

我的程序使用 main 函数,而不是 wmain,并且需要从命令行获取参数并将其存储在 wchar_t 变量中。现在我知道,如果我当场编好绳子,我就能做到这一点;

wchar_t variable[1024];
swprintf(variable,1024,L"%s",L"randomstringETC");

因为看起来 L 将 char 数组转换为 wchar 数组。但是当我这样做时它不起作用;

wchar_t variable[1024];
swprintf(variable,1024,L"%s",Largv[1]);

显然是因为这是一个语法错误。我想我的问题是,有没有一种简单的方法可以将普通字符串转换为 wchar_t 字符串?

或者有没有办法完全避免这种 Unicode 的东西,并在 Windows 上使用 C 以另一种方式从串行读取..

最佳答案

没有名为 CreateFile 的 winapi 函数。有 CreateFileW 和 CreateFileA。 CreateFile 是一个,它根据是否定义了 _UNICODE 宏映射到这些实际函数之一。 CreateFileW 接受一个 LPCWSTR(又名 const wchar_t*),CreateFileA 接受一个 LPCSTR(又名 const char*)。

如果您还没有准备好迁移到 Unicode,那么只需显式使用 CreateFileA() 函数即可。或者更改项目设置:Project + Properties、General、Character Set。成本非零,底层操作系统完全基于 Unicode。因此 CreateFileA() 通过一个转换层,根据当前系统代码页将 const char* 转换为 const wchar_t*。

关于c - 如何在 Win32 命令行应用程序中将 argv 转换为宽字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7333416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com