windows-为什么exception没有宽字符版本?还有很多类库也没有,使用wchar_t不是超级麻烦吗?

问题描述

为什么exception没有宽字符版本?还有很多类库也没有,使用wchar_t不是超级麻烦吗?

最近因为字符集的问题,搞来搞去总是有一些字符变成?号,想采用wchar_t替换原来的char,但是发现麻烦非常多,最郁闷的是一些类库的参数要求采用char*,连最平常的exception也不支持wchar_t,望众高手指教啊,用宽字符需要这么麻烦吗??比如那个OTL4,虽然声称支持宽字符,但是其中对象的参数,如连接字符串,SQL都要求传人char字符串,只是查询结果可以输出Unicode编码而已,这不让人郁闷吗?让函数支持一下宽字符版本有多难,为什么连OTL4被广泛采用的库都无视宽字符了,难道大家用它的时候都不用宽字符了,或者用宽字符都是将连接字符串,sql等转换char再用?用宽字符解决乱码不是很好的设想吗?用宽字符调用本来就只支持宽字符的windows api不是很好吗?为什么实现起来那么多麻烦事?真的需要这么麻烦吗??望高手指点迷津,或给个建议!

解决方案

你要分清楚,一些库是标准库,标准库必须安装标准来,不是微软或者哪家说了算的。一些库(windows api, mfc, qt, ...)不是标准库,怎么方便怎么来。

解决方案二:

没有宽字符的,就只能自己在调用前后做一下转换。

时间: 2024-10-26 05:41:14

windows-为什么exception没有宽字符版本?还有很多类库也没有,使用wchar_t不是超级麻烦吗?的相关文章

C语言中宽字符和多字节字符

C 语言原本是在英文环境中设计的,主要的字符集是7 位的ASCII 码.从此开始,8 位的byte(字节)变成最常见的字符编码单位,但是国际化软件必须能够表示不同的字符,而这些字符数量庞大,无法使用一个字节编码,于是世界上使用各式 各样多字节的字符编码集合已经有数十年了,比如用来表示"非拉丁字母"以及"非字母"的中.日.韩文字系统.在1994 年,"Normative Addendum 1"(基准增补一)的采用,让ISO C 可以标准化两种表示大

tring 宽字符 ++-老问题了c++,VS2013,CString宽字符,求大神

问题描述 老问题了c++,VS2013,CString宽字符,求大神 直接上代码,道理我都懂,求个解决方法 void CMFCApplication9Dlg::OnBnClickedButton01() { CString ID, Name; GetDlgItem(ID_xuehao)->GetWindowText(ID); GetDlgItem(ID_xingming)->GetWindowText(Name); CString str, text; str = _T('学号:') + ID

c++-error C2188: “572386”: 对宽字符来说太大

问题描述 error C2188: "572386": 对宽字符来说太大 error C2188: "572386": 对宽字符来说太大 mfc odbc 连接数据库出现这个问题如何解决 解决方案 https://msdn.microsoft.com/zh-cn/libRary/079cbs49(v=VS.80).aspxhttp://club.topsage.com/thread-2227977-1-1.htmlhttp://bbs.csdn.net/topics

linux-Linux下, 加载动态库报宽字符错误.

问题描述 Linux下, 加载动态库报宽字符错误. 请教: 如题: 程序启动时加载某动态库(.so)时,提示加载失败 具体提示为 load lib???????.so fail, reason:Invalid or incomplete multibyte or wide character. 解决方案 可能是字符集不同的原因

【C/C++学院】0814-引用高级、引用高级增加/auto自动变量自动根据类型创建数据/Bool/Enum/newdelete全局/大数据乘法与结构体/函数模板与auto/宽字符本地化/inline

引用高级.引用高级增加 #include<iostream> #include<stdlib.h> // int a[10] // int (&ra)[10] // int a[2][5] // int (&ra)[2][5] void main1() { int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int(&ra)[10](a);//引用就是给原来的变量有一个别名同一个地址 int i = 0; for (

宽字符处理函数和窄字符处理函数对应表

字符分类:  宽字符函数普通C函数描述 iswalnum()  isalnum() 测试字符是否为数字或字母 iswalpha()  isalpha() 测试字符是否是字母 iswcntrl()  iscntrl() 测试字符是否是控制符 iswdigit()  isdigit() 测试字符是否为数字 iswgraph()  isgraph() 测试字符是否是可见字符 iswlower()  islower() 测试字符是否是小写字符 iswprint()  isprint() 测试字符是否是可

C++多字节字符转换为宽字符的两种方法

  目前知道有两种方式:可以提供宽字符与ANSI字符之间的转换, 第一种由COM库提供的函数 char*  _com_util::ConvertBSTRToString(BSTR ); BSTR _com_util::ConvertStringToBSTR(char*); Example // ConvertBSTRToString.cpp #include <comutil.h> #include <stdio.h> #pragma comment(lib, "coms

github-Github for windows客户端怎么回滚到某个版本?

问题描述 Github for windows客户端怎么回滚到某个版本? 百度到的答案是有一个回滚按钮,为什么我的没有, 难道新版的客户端给删掉了? 假如我想回滚到那个标记的版本那, 点击histroy 后没有回滚的按钮啊,Revert也不是回滚的意思啊 解决方案 如何使用GitHub for Windows客户端github for windows 2.0版本使用教程7个Google Reader客户端(for Windows & Mac)

如何解决基于c#windows窗体程序项目在不同版本vs上的兼容性问题

问题描述 求大神指教:如何解决基于c#windows窗体程序项目在不同版本vs上的兼容性问题我在vs2010上编写的c#窗体程序放到vs2012上就会报项目不可用 解决方案 解决方案二:VS是向下兼容的.解决方案三:c#windows窗体程序项目在不同版本vs上的兼容性问题解决方案四:vs是向上兼容的吧