草庐IT

c++ - wchar_t 的 isalpha 等价物

isalpha或isalnum使用wchar_t的等效函数是什么?工作类型?举个例子就好了谢谢 最佳答案 iswalpha,iswalnum.用法相同。 关于c++-wchar_t的isalpha等价物,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3378343/

c++ - char vs wchar_t何时使用哪种数据类型

我想了解char和wchar_t之间的区别吗?我知道wchar_t使用更多字节,但是我可以得到一个清晰的示例来区分何时使用char与wchar_t的区别 最佳答案 从根本上讲,当编码的符号数量超过wchar_t可以包含的数量时,请使用char。背景char类型具有足够的容量来容纳ASCII字符集中的任何字符(编码)。问题在于,许多语言需要的编码比ASCII帐户所需的更多。因此,需要更多而不是127种可能的编码。某些语言具有256种以上的可能编码。char类型不能保证范围大于256。因此需要新的数据类型。wchar_t(又称宽字符)为

c++ - 如何将 char 数组转换为 wchar_t 数组?

charcmd[40];driver=FuncGetDrive(driver);sprintf_s(cmd,"%c:\\test.exe",driver);我不能在中使用cmdsei.lpFile=cmad;所以,如何将char数组转换为wchar_t数组? 最佳答案 只需使用这个:staticwchar_t*charToWChar(constchar*text){constsize_tsize=strlen(text)+1;wchar_t*wText=newwchar_t[size];mbstowcs(wText,text,siz

c++ - C++ 中的 UTF-8 兼容性

我正在编写一个程序,需要能够处理所有语言的文本。我的理解是UTF-8可以完成这项工作,但我遇到了一些问题。我说UTF-8可以存储在C++中的简单char中是否正确?如果是这样,为什么当我使用带有char、string和stringstream的程序时会收到以下警告:warningC4566:character由通用字符名称“\uFFFD”表示的不能在当前代码页(1252)中表示。(当我使用wchar_t、wstring和wstringstream时,我没有收到该错误。)另外,我知道UTF是可变长度的。当我使用at或substr字符串方法时,我会得到错误的答案吗?

c++ - 在 C++ 中什么时候使用 WCHAR 什么时候使用 CHAR

我有一个问题:有些库使用WCHAR作为文本参数,而其他库使用CHAR(作为UTF-8):我在编写自己的库时需要知道何时使用WCHAR或CHAR。 最佳答案 使用char并将其视为UTF-8。这有很多原因。这个网站总结得比我好得多:http://utf8everywhere.org/它建议您从任何库收到它后立即从wchar_t转换为char(UTF-16到UTF-8),并在需要时转换回来将字符串传递给它。因此,要回答您的问题,请始终使用char,除非API要求您传递或接收wchar_t。

windows - 将 const wchar_t* 转换为 const char*

我正在尝试使用GetHostByName(),这需要一个constchar*。我的URL位于成本wchar_t*格式的变量中。我如何转换它以便GetHostByName可以使用它?代码。BSTRbstr;pBrowser->get_LocationURL(&bstr);std::wstringwsURL;wsURL=bstr;size_tDSlashLoc=wsURL.find(L"://");if(DSlashLoc!=wsURL.npos){wsURL.erase(wsURL.begin(),wsURL.begin()+DSlashLoc+3);}DSlashLoc=wsURL.f

c++ - 启动新的 Windows 应用程序 : Should I use _TCHAR or wchar_t for text?

我正在用C++为Windows编写一个新的(个人爱好)应用程序。在以前的低级Windows内容中,我使用_TCHAR(或只是TCHAR)数组/basic_strings进行字符串操作。如果我不关心Win2k之前的Windows平台,使用_TCHAR比使用wchar_t直接使用Unicode有什么优势吗?编辑:提交后我在2008年10月发现了一个类似的问题:IsTCHARstillrelevant?现在似乎对放弃TCHAR达成了更多共识 最佳答案 不,没有。只需使用wchar_t。TCHAR仅在您希望能够使用条件编译开关将程序转换为以

windows - 如何在 Linux 中使用 POSIX 方法从文件中读取 Unicode-16 字符串?

我有一个包含UNICODE-16字符串的文件,我想将其读入Linux程序。这些字符串是从Windows的内部WCHAR格式原始写入的。(Windows总是使用UTF-16吗?例如在日语版本中)我相信我可以使用原始读取和使用wcstombs_l进行转换来读取它们。但是,我无法确定要使用的语言环境。在我最新的Ubuntu和MacOSX机器上运行“locale-a”会产生零个名称中包含utf-16的语言环境。有没有更好的办法?更新:正确答案和下面的其他答案帮助我使用libiconv。这是我用来进行转换的函数。我目前将它放在一个类中,该类将转换转换为一行代码。//Functionforconv

windows - 如何在 Linux 中使用 POSIX 方法从文件中读取 Unicode-16 字符串?

我有一个包含UNICODE-16字符串的文件,我想将其读入Linux程序。这些字符串是从Windows的内部WCHAR格式原始写入的。(Windows总是使用UTF-16吗?例如在日语版本中)我相信我可以使用原始读取和使用wcstombs_l进行转换来读取它们。但是,我无法确定要使用的语言环境。在我最新的Ubuntu和MacOSX机器上运行“locale-a”会产生零个名称中包含utf-16的语言环境。有没有更好的办法?更新:正确答案和下面的其他答案帮助我使用libiconv。这是我用来进行转换的函数。我目前将它放在一个类中,该类将转换转换为一行代码。//Functionforconv

c - C 中的宽字符输入/输出是否始终读取/写入正确的(系统默认)编码?

我主要对类Unix系统(例如,可移植的POSIX)感兴趣,因为Windows似乎对宽字符做了一些奇怪的事情。读取和写入宽字符函数(如getwchar()和putwchar())始终“做正确的事”,例如从utf-8读取并在设置语言环境时写入utf-8,或者我是否必须手动调用wcrtomb()并使用例如打印字符串fputs()?在我的系统(openSUSE12.3)中,$LANG被设置为en_GB.UTF-8他们似乎做了正确的事情(检查输出我看到什么看起来像UTF-8即使字符串是使用wchar_t存储并使用宽字符函数编写的)。但是我不确定这是否得到保证。例如cprogramming.com