问题标签 [wchar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Linux 和 Windows 的 wchar_t 的区别和转换
我从这个和这个线程中了解到,在 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 位)是我唯一的选择吗?
提前致谢!
c++ - 从 UTF-8 到 ANSI wcstombs 的转换在一个特殊字符处失败
我想更改 wchar_t*,就像它显示为 char* 一样。不应进行像 WideCharToMultibyte 中的转换。
我找到了 wcstombs 函数,它看起来工作正常,但是有一个字符没有得到正确更改。
它是“-”,它的 ANSI 编号是 156,但在 UTF-8 中是数字 339。当然 ASCII 没有那么多数字,但为什么会弄错呢?
这是我的源代码的一部分,我添加了一个循环和一个 if 以便它工作:
此代码有效,但说真的,这是解决该问题的最佳方法吗?
提前谢谢了!
wchar - Wsutil.exe(本机 Web 服务编译器):用于 xsd:string 类型的 WCHAR* 与 LPCWSTR
本机 Web 服务编译器是否有充分的理由为WCHAR *
vs xsd:string
a const wchar_t*
(或简称为 LPCWSTR)生成 a?
我提出这个问题的原因是我们的应用程序是一个本地 c++ 应用程序,它std::wstring
在需要传递到 WCF 服务的代码中浮动。为了使用本地 Web 服务编译器生成的 C 函数,它迫使我做一些事情,例如
从上面可以看出,我被迫取消const
on 指针,我在这里关注的一点是,明确地有一个WCHAR*
类型是指针数据预计会被 webservices.lib 本身操纵吗?
或者,我最终可以将字符串的内容复制到 aWCHAR*
但是因为我们的 c++ 应用程序作为服务运行,并且我们对频繁的分配/取消分配存在堆碎片问题。
谢谢,拉古
c++ - 宽字符输出结果
为什么我在使用 wchar_t 时会得到数字作为输出结果?
wchar - 如何让我的代码也处理 wchar_t
我真的很想在这方面得到一些帮助。我对 C++ 编程比较陌生。我需要我的代码能够处理 ASCII 和 Unicode。以下是输入 szTestString1,在输入中找到“Ni”并将其替换为“NI”。szTestString1 是 ASCII 所以我的代码工作正常。如何使代码也能够处理 szTestString2?我用 wstring 替换了字符串,用 L"Ni" 替换了 "Ni"。此外,我使用 wcout 而不是 cout,但输出没有多大意义。而我现在迷路了。任何提示将不胜感激。
c++ - wchar_t 到字符串的转换
我想将strFileNotifyInfo[1].FileName (Wchar_t) 转换为字符串,以便我可以看到文件路径。但我不能让它工作。
这是我的代码:
c++ - 使用 -fshort-wchar 的含义
在 Mac OS X 系统上浏览文件 wchar.h 时,我发现当未定义 __cplusplust 并且 wchar_t 的最大大小为 2 字节时(通过使用编译器选项 -fshort -wchar)。
似乎对于 C 程序,如果定义了 -fshort-wchar,则不允许使用此类函数。我想知道使用 -fshort-wchar 时使用 wchar_t 函数的含义是什么?
您可能想知道为什么我需要使用 -fshort-wchar。因为,我正在移植一个最初为 Windows 编写的应用程序,其中 wchar_t 的大小为两个字节。保存在 wchar_t 字符串中的数据被写入文件,并且还在两个应用程序之间交换。
什么是处理不同平台上 wchar_t 可变性的好方法?Windows 上的假设是 wchar_t 为 16 位。
c++ - 将字符转换为宽字符
我正在尝试使用该mbstowcs_s
函数将多字节字符序列转换为相应的宽字符序列。但我一直有以下堆损坏问题。谁能告诉我如何解决这个问题?
这是一个示例代码。调试时,始终是delete wc_name
导致问题的线路。我知道不应该这样。
c - 比较WCHAR字符串和C中的Const Char?
我用 C 编写了一个代码,它将使用 Process32First() API 来获取有关该进程的信息。所有信息都存储在此处定义的 PROCESSENTRY32 结构中:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms684839%28v=vs.85%29.aspx
pe32 是 PROCESSENTRY32 结构的名称。进程名称将是:pe32.szExeFile
我可以这样打印:
现在,我想将进程名称与 explorer.exe 等特定进程进行比较
这就是我正在做的事情:
这没用。
在 MS Visual Studio 2008 中,PROCESSENTRY32 结构的 szExeFile 成员的数据类型为:WCHAR tagPROCESSENTRY32::szExeFile[260]
所以,我认为它是一个宽字符串?
explorer.exe 是一个普通的字符串(const char *),指向一个字符数组的指针。
如何将 szExeFile 与普通字符串进行比较?
我发现这些数据类型很混乱,我希望通过这个例子更好地理解它们。
谢谢。