jjzjj

c++ - wchar_t 和编码

如果我想将一段字符串转换为UTF-16,比如说char*xmlbuffer,我是否必须在编码为UTF之前将类型转换为wchar_t*-16?在编码为UTF-8之前是否需要char*类型?wchar_t、char与UTF-8或UTF-16或UTF-32或其他转换格式有何关系?在此先感谢您的帮助! 最佳答案 不,您不必更改数据类型。关于wchar_t:标准是这么说的Typewchar_tisadistincttypewhosevaluescanrepresentdistinctcodesforallmembersofthelargest

C++ WCHAR 操作

我正在用C++开发一个微型Win32应用程序。我很早以前就学过C++基础知识,所以现在我完全被C++中的字符串搞糊涂了。没有WCHAR或TCHAR只有char和String。经过一些调查后,我决定不使用TCHAR。我认为我的问题非常简单,但我找不到如何在C++中操作字符串的明确指南。受近几年PHP编码的影响,我曾期望一些简单的字符串操作,但我错了!很简单,我只需要将新数据放入一个字符串即可。WCHAR*cs=L"\0";swprintf(cs,"NEWDATA");这是我的第一次尝试。在调试我的应用程序时,我调查过swprintf只将前2个字符放入我的csvar。我已经通过这种方式解决

c++ - 无法将 'LPCWSTR {aka const wchar_t*}' 转换为 'LPCSTR {aka const char*}

我一直在尝试让Glew和opengl3.2在win32上下文中使用代码块(minGW)。我找到了一个不错的小教程here因为我一直在努力弄清楚在代码块中编译glew是否真的可行,所以我想在学习教程之前先试用一下源代码,看看它是否可行。在稍微调整代码后,我尝试编译并遇到了几个我以前从未见过的错误。它们如下|Infunction'boolcreateWindow(LPCWSTR,int,int)':||73|error:cannotconvert'LPCWSTR{akaconstwchar_t*}'to'LPCSTR{akaconstchar*}'inassignment||80|erro

c++ - 使用 TCHAR 时出错,无法转换为 wchar_t

有人要求我向现有的旧项目添加功能,但我无法构建它。它处理unicode字符串,但我收到很多关于使用TCHAR的错误。特别是几乎每个错误都是TCHAR不能转换为或用作wchar_t。根据我在许多不同文章中看到的情况,我尝试使用#define_UNICODE或#defineUNICODE,但它们都没有解决问题。这是一段代码:#include#include#include#include#include#include#include#include#include#include#include#pragmacomment(lib,"wininet.lib")usingnamespace

c++ - 使 size_t 和 wchar_t 可移植?

据我了解,size_t和wchar_t的表示完全是特定于平台/编译器的。例如,我读到Linux上的wchar_t现在通常是32位,但在Windows上是16位。有什么方法可以在我自己的代码中将它们标准化为一组大小(int、long等),同时仍然保持与两个平台上现有标准C库和函数的向后可比性?我的目标基本上是做一些类似typedef的事情,使它们成为固定大小。在不破坏某些东西的情况下这可能吗?我应该这样做吗?有没有更好的办法?更新:我想这样做的原因是我的字符串编码在Windows和Linux上都是一致的谢谢! 最佳答案 听起来您正在寻

c++ - 不赞成从字符串 const 进行转换。到 wchar_t*

你好,我有一个泵类,它需要使用一个成员变量,该变量是指向包含端口地址的wchar_t数组的指针,即:“com9”。问题是,当我在构造函数中初始化此变量时,我的编译器会标记折旧转换警告。pump::pump(){this->portNumber=L"com9";}这工作正常,但每次我编译时的警告都很烦人,让我觉得我做错了什么。我尝试创建一个数组,然后像这样设置成员变量:pump::pump(){wchar_tport[]=L"com9";this->portNumber=port;}但出于某种原因,这使我的portNumber指向“F”。显然是我的另一个概念问题。感谢您帮助解决我的菜鸟问

c++ - 如何遍历 C++ 中的 unicode 字符?

我知道要在C++中获得一个unicode字符,我可以这样做:std::wstringstr=L"\u4FF0";但是,如果我想获取4FF0到5FF0范围内的所有字符怎么办?是否可以动态构建unicode字符?我想到的是这样的伪代码:for(inti=20464;i我如何在C++中做到这一点? 最佳答案 wstring中的wchar_t类型是整型,可以直接使用:for(wchar_tc=0x4ff0;c尝试对大于0xffff的字符执行此操作时要小心,因为根据平台(例如Windows),它们将不适合wchar_t。例如,如果您想查看Em

c++ - 无法在参数传递中将 'const char*' 转换为 'WCHAR*'

我在文档中写道,用户名、IP和密码必须是constchar*,当我将变量放入constchar时,出现此错误消息。这是我的代码:#include#include#include#includeusingnamespacestd;typedefint(__cdecl*MYPROC)(LPWSTR);intmain(){HINSTANCEhinstDLL;MYPROCProcAdd;hinstDLL=LoadLibrary("LmServerAPI.dll");if(hinstDLL!=NULL){ProcAdd=(MYPROC)GetProcAddress(hinstDLL,"LmSer

c++ - 比较 2 个 wchar_t 数组

我敢肯定这太简单了,但我来自c#背景,字符串很容易,现在我要进入不受管理的世界,我很困惑。本质上,我使用EnumDisplayDevices来列出可用设备,我想以特定适配器为目标,因此我需要将DeviceString和DeviceName与一些已知值进行比较,以查看我是否有合适的适配器可以使用。但我很难过,我这样定义已知值...wchar_tdevName[]=L"Intel(R)HDGraphicsFamily";但直接比较不起作用-if(devName==theDisplay.DeviceName)strcmp似乎不适用于宽字符,所以我不知道该怎么做,有人知道怎么做吗?谢谢

android - android ndk中的unicode支持

我有一个大型C/C++库,我需要将其用作AndroidNDK项目的一部分。该库需要能够智能处理UTF8字符串(例如,转换为小写/大写)。该库具有条件编译功能,可用于转至OSAPI以进行转换,但似乎没有任何适用于UTF8的AndroidAPI。(mbstowcs等)Thisthread说使用JNI方法来完成它(!),这是一个相当重量级的解决方案。我正在考虑构建ICU,但由于它使用GNUAutotools,我不确定我能否使其与NDK工具链一起使用。:/除了使用JNI之外,还有其他人遇到过这个问题并做了其他事情吗?编辑:我试图让ICU在配置步骤编译失败:checkingwchar.husab