QString与中文,QString与std::wstring的相互转换(使用fromStdWString和u8关键字)
Qt版本:5.5.1
Qt的QString功能丰富,对非英语语言的支持也不是问题,但支持得不够直接。例如,像
|
1
|
QString str("死亡使者赛维"); |
这样直接用带中文的字符串进行构造,那么用QMessageBox显示str时将出现乱码。如果使用fromLocal8Bit、fromLatin1这样的函数,又依赖本地计算机的显示语言,所以它们不是好方法。
显式地使用宽字符(wchar_t)或UTF-8才是好方法。
|
1
2
|
QString str0(QString::fromStdWString(L"数学分析"));QString str1(QString::fromUtf8(u8"高等代数")); // C++11 |
UTF-8的字符串字面量是C++11的内容,如果你的编译器不支持它,可以用第一种方式。这样,不管本地的语言是什么,都是可以通吃的。
测试一下吧!
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
void MsgBox(const QString &s){ QMessageBox::information(nullptr, QString::fromUtf8(u8"标题"), s, QMessageBox::Ok);}void MainWindow::on_pushButton_clicked(){ QString str0(QString::fromStdWString(L"数学分析")); QString str1(QString::fromUtf8(u8"高等代数")); QString str2(QString::fromUtf8(u8"ステンカラーのコート 【折式立领的外套】")); // 日文也不是问题 QString s(QString::fromUtf8(u8"\r\n")); MsgBox(str0 + s + str1 + s + str2);} |
运行结果:

最后给出QString与std::wstring的相互转换。
从std::wstring到QString,用QString的静态成员函数QString::fromStdWString。它接受一个std::wstring类型的参数,返回对应的QString。
|
1
2
|
std::wstring str_STL(L"实变函数论");QString str_Qt = QString::fromStdWString(str_STL); |
从QString到std::wstring,用QString的成员函数QString::toStdWString。它返回一个std::wstring。
QString与中文,QString与std::wstring的相互转换(使用fromStdWString和u8关键字)的更多相关文章
- 如何使用 window api 转换字符集?(std::string与std::wstring的相互转换)
//宽字符转多字节 std::string W2A(const std::wstring& utf8) { int buffSize = WideCharToMultiByte(CP_ACP, ...
- 与QString("我是中文")完全一样,你必须告诉tr这个窄字符串是何种编码?你不告诉它,它就用latin1。于是所谓的乱码问题就出来了。
在论坛中漂,经常遇到有人遇到tr相关的问题.用tr的有两类人: (1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr (2)另一类人,确实是出于国际化的需要,将需要在界面上显示的 ...
- std::string, std::wstring, wchar_t*, Platform::String^ 之间的相互转换
最近做WinRT的项目,涉及到Platform::String^ 和 std::string之间的转换,总结一下: (1)先给出源代码: std::wstring stows(std::string ...
- std::string与std::wstring互相转换
作者:zzandyc来源:CSDN原文:https ://blog.csdn.net/zzandyc/article/details/77540056 版权声明:本文为博主原创文章,转载请附上博文链接 ...
- C++ MFC std::string转为 std::wstring
std::string转为 std::wstring std::wstring UTF8_To_UTF16(const std::string& source) { unsigned long ...
- 对std::string和std::wstring区别的解释,807个赞同,有例子
807down vote string? wstring? std::string is a basic_string templated on a char, and std::wstring on ...
- 宽字符std::wstring的长度和大小问题?sizeof(std::wstring)是固定的32,说明std::wstring是一个普通的C++类,而且和Delphi不一样,没有负方向,因为那个需要编译器的支持
std::wstring ws=L"kkkk"; int il=ws.length(); int ia=sizeof(ws); int ib=sizeof(&qu ...
- std::wstring
std::wstring主要用于 UTF-16编码的字符, std::string主要用于存储单字节的字符( ASCII字符集 ),但是也可以用来保存UTF-8编码的字符. UTF-8和UTF-16是 ...
- std::wstring std::string w2m m2w
static std::wstring m2w(std::string ch, unsigned int CodePage = CP_ACP) { if (ch.empty())return L&qu ...
随机推荐
- dlib库学习之一
dlib库学习之一 1.介绍 跨平台 C++ 通用库 Dlib 发布 ,带来了一些新特性,包括概率 CKY 解析器,使用批量同步并行计算模型来创建应用的工具,新增两个聚合算法:中国低语 (Chines ...
- design pattern factory method #Reprinted#
引入人.工厂.和斧子的问题: (1),原始社会时,劳动社会基本没有分工,需要斧子的人(调用者)只好自己去磨一把斧子,每个人拥有自己的斧子,如果把大家的石斧改为铁斧,需要每个人都要学会磨铁斧的本领,工作 ...
- select_related
作用:减少DB访问次数 from django.db import models class Blog(models.Model): name = models.CharField(max_lengt ...
- Sphnix
Sphinx高性能的搜索引擎(简单.强大.实用) http://blog.csdn.net/lgm252008/article/details/5373354
- kinect for windows - DepthBasics-D2D详解之二
通过上篇文章,我们了解了在视频图像从kinect开发包传输到应用程序之前的一系列初始化工作,那么这篇文章主要来叙述,如何将一帧图像数据获取到,并显示出来的. 更新窗口是在Run函数消息处理中,当Kin ...
- .NET通用权限系统快速开发框架源代码
有兴趣的朋友欢迎加群讨论:312677516 一.开发技术:B/S(.NET C# ) 1.Windows XP以上 (支援最新Win 8) 2.Microsoft Visual Studio 201 ...
- MYSQLI - mysqli
PHP MysqlI操作数据库 1连接数据库. //procedural style$mysqli = mysqli_connect('host','username','password','da ...
- 【SVN】is out of date
右击项目(team->update 或者 team->freash/cleanup),再操作,提交就可以了.
- javascript 数组部分
<html> <body> <script type="text/javascript"> var arr = new Array(6) arr ...
- python读写xml
来自http://blog.csdn.net/liuyuehui110/article/details/7287897 备份防止链接失效 一.XML的读取. 在 NewEdit 中有代码片段的功能,代 ...