char和wchar_t的转换

llsj0522 2014-05-07 11:13:48
用了一段时间的XE4,才发现在xe4里最好将字符串设置为widestring,字符设置为wchr_t 开发调试时才不会报错,不然就得不停的重开或是clean程序。
我有两个问题 1是从文本文件中读取出的内容赋给一个wchar型的字符型数组,显示就是乱码;
2是之前设置的链接的动态dll,loadlibrary(),这个函数里就必须是char才可以获取句柄,但是如果是char,程序运行没有问题,但只要修改代码就必须clean一次,不但就报内存地址错;
求解答。。。。。
...全文
157 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
过客猫2022 2014-05-12
  • 打赏
  • 举报
回复
现在的版本字符串默认是UnicodeString,但是还有AnsiString和UTF8String,只要相互赋值,就可以得到相应编码的字符串。 你把字符串读到UnicodeString 中然,再用AnsiString s = unistring;这个就实现了转换了做用了。然后再调用你的dll,就OK了
缘中人 2014-05-08
  • 打赏
  • 举报
回复
我就是不断的查找替换
ccrun.com 2014-05-07
  • 打赏
  • 举报
回复
根本不需要必须将字符串设置成widestring 1. 如果你文件中存放的ANSI字符,那直接读取到wchar数组,乱码是正常的,需要先读到char数组中再mbstowcs转换一下。 2. 如果你平时写代码时能注意一下字符串方面的技巧,相信你的代码在C++Builder6.0和2009+中迁移,不会费太多事。比如用这样的风格: TCHAR szDllFile[] = TEXT("abc.dll"); HINSTANCE hLib = LoadLibrary(szDllFile); 或 HINSTANCE hLib = LoadLibrary(TEXT("abc.dll")); 或 HINSTANCE hLib = LoadLibraryA("abc.dll"); 或 HINSTANCE hLib = LoadLibraryW(L"abc.dll");

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧