我从这个和这个线程中了解到,在 Windows 中,wchar_t 是 16 位的,而对于 Linux,wchar_t 是 32 位的。
我有一个客户端-服务器架构(仅使用管道而不是套接字)——我的服务器是基于 Windows 的,客户端是 Linux。
服务器有一个 API 可以从客户端检索主机名。当客户端基于 Windows 时,它可以只执行 GetComputerNameW 并返回 Wide-String。但是,当客户端基于 Linux 时,事情就会变得一团糟。
作为第一种天真的方法,我使用 mbstowcs() 希望将 wchar_t* 返回到 Windows 服务器端。但是,这个 LPWSTR(我的 linux 客户端有 typedef wchar_t* LPWSTR)在 Windows 上是无法识别的,因为它期望它的 wchar_t 是 16 位的。
那么,将 linux 上 gethostname() 的输出转换为 char* 为 unsigned short(16 位)是我唯一的选择吗?
提前致谢!