Qt 库中对字符串类型进行了封装,QString 类提供了所有字符串操作方法,给开发带来了便利。 由于第三方库的类型基本上都是标准的类型,即使用std::string或char *来表示字符 (串) 类型,因此在Qt框架下需要将QString转换成标准字符 (串) 类型。下面介绍QString, Std::string, char *相互转换转换方法。

  • std::string和char *的相互转换

1.  将char *或char[]转换为std::string

可直接赋值

std::string ss,str;
const char *y="hello";
const char z[]="hello world";
ss=y;
str=z;

2.  将std::string转换为char *或char[]

有3种方法,推荐第二种方法

1) 尾部不会附加结束符'\0'

std::string str="abc";
char *p=str.data();

2) 尾部附加结束符'\0'

std::string str="Pigman";
char ch[];
strcpy(ch,str.c_str());

3) 尾部不会附加结束符'\0',第二个参数为复制字符个数,第三个为复制位置

std::string str("pig can fly");
char *p;
str.copy(p,,);
*(p+)='\0';  // 手动添加结束符
  • QString和std::string相互转换,以及避免出现乱码
QString qstr;
std::string str;
//  QString转std::string
str=qstr.toStdString();
str=(const char*)qstr.toLocal8bit();      // 中文字符串避免出现乱码
//  std::string转QString
qstr=QString::fromStdString(str);
qstr=QString::fromLocal8bit(str.c_str());  // 中文字符串避免出现乱码
  • QString和char *相互转换

1. QString转为char *

有两种方法。

1) 先转为std::string,再转为char *,如上所示

2) 先转为QByteArray,再转为char *

QString ss("Flying without wings");
QByteArray sr=ss.toLocal8Bit();
char ch[];
strcpy(ch,sr.data());

2. char *转为QString

char *ch="westlife";
QString str(ch); // Qt5
QString str = QString::fromUtf8(ch)); // Qt4

QString, Std::string, char *相互转换的更多相关文章

  1. QString std::string 相互转 含中文

    std::string cstr;QString qstring; //QString str1 = " D:\\参考手册\\BIM\\osg\\build1.OSGB"; //从 ...

  2. C++ wstring string char* wchar_t相互转换

    标签: stringwstringwchar_tcharc++2013-12-19 00:29 3721人阅读 评论(0) 收藏 举报本文章已收录于: C++知识库 分类: C/C++(50) 1. ...

  3. QString 与 string转换

    [1]QString 转换为string QString qString("好好学习天天向上"); std::string stdString = qString.toStdStr ...

  4. C++ MFC std::string转为 std::wstring

    std::string转为 std::wstring std::wstring UTF8_To_UTF16(const std::string& source) { unsigned long ...

  5. QString 和std::string互转

    std::string cstr; QString qstring; //****从std::string 到QString qstring = QString(QString::fromLocal8 ...

  6. 实战c++中的string系列--std:vector 和std:string相互转换(vector to stringstream)

    string.vector 互转 string 转 vector vector  vcBuf;string        stBuf("Hello DaMao!!!");----- ...

  7. Qt的QString,QByteArray,char *相互转换

    1.QString转换为QByteArray QString str = "; QByteArray byte = str.toUtf8(); // 转换为Utf8格式 byte.toLoc ...

  8. c++之常见数据类型(int,double,float,long double long long 与std::string之间)相互转换(含MFC的CString、含C++11新特性函数)

    --- 已经通过初步测试---- ------------------ 下面的是传统常见数据类型的转换(非c++11)---------------  std::string 与其他常用类型相互转换, ...

  9. std::string stringf(const char* format, ...)

    std::string stringf(const char* format, ...){ va_list arg_list; va_start(arg_list, format); // SUSv2 ...

随机推荐

  1. Java日志框架解析及实战分析

    转载自: https://zhuanlan.zhihu.com/p/24272450 https://zhuanlan.zhihu.com/p/24275518 作为Java程序员,幸运的是,Java ...

  2. HDU 3397 区间覆盖,颠倒,合并(好题)

    http://acm.hust.edu.cn/vjudge/problem/14689 三个操作 [a,b]覆盖为0 [a,b]覆盖为1 [a,b]颠倒每项 两个查询 [a,b]间1数量 [a,b]间 ...

  3. 转-vs2017安装并且安装包不占用C盘空间

    平常的安装方式,不论是在线安装还是下载的离线安装包,都会在安装过程中将vs2017的安装包保存在C:\ProgramData\Microsoft\VisualStudio\Packages文件夹下并占 ...

  4. flex布局帮助你快速实现布局

    flex布局可以帮我们快速布局一些区块,实现你想要的效果,不用再去float,position之类的.我们在布局网页的时候很多时候都是一些特殊布局,flex就能帮我快速去布局,不需要去定位. 任何一个 ...

  5. GitHub无法push的问题

    问题背景 换了台别人用过的电脑想要将文件push到github上,出现下面报错 remote: Permission to *****(我的)/gittest.git denied to *****( ...

  6. Windows C/C++ 内存泄露检测

    #pragma once #define _CRTDBG_MAP_ALLOC #include<crtdbg.h> #include<stdlib.h> #include< ...

  7. 3元购买微信小程序解决方案一个月

    一.登录微信公众平台https://mp.weixin.qq.com/ 二.点击立即注册.注意:这里不要用微信公众号登录,小程序账号和微信公众号是不同的. 三.在注册页面点击小程序板块. 四.进入小程 ...

  8. Perl 基础笔记: 使用 cpanm 安装 Perl 模块

    cpanm 其实只是一个可执行文件而已.将它下载到 bin 目录,然后添加执行权限就可以用了. $ sudo wget http://xrl.us/cpanm -O /usr/bin/cpanm; s ...

  9. Jmeter入门11 使用Simple Controller组织接口测试用例

    接口测试实践中,可以使用Simple Controller来组织测试用例. 官网上说该控制器的主要用途用来组织采样器和其他的逻辑控制器等. 以下为一个接口测试项目结构示例: 1 测试计划 >添加 ...

  10. OC category(分类)

    // ()代表着是一个分类 // ()中的Test代表着分类的名称 @interface Student (Test) // 分类只能扩展方法,不能增加成员变量 - (void)test2; @end