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. oracle学习篇五:组函数,分组统计

    常用组函数: 1.ccount() 求出全部记录数. 2.max() 求出一组最大值 3.min() 求出一组最小值 4.avg() 求出平均值 5.sum() 求和 --1.统计员工数量: sele ...

  2. asp: AJAX Database

    <% @LANGUAGE="VBSCRIPT" CODEPAGE="65001" %> <!DOCTYPE html PUBLIC " ...

  3. Celery-------周期任务

    在项目目录例子的基础上进行修改一下celery文件 from celery import Celery from celery.schedules import crontab celery_task ...

  4. 【Android】2.0 Android开发环境的搭建——Eclipse

    1.0 eclipse,这可不算谷歌开发的,是IBM公司开发的,而且是Java语言写的 2.0 eclipse怎么下.百度“eclipse”,进入eclipse官网 然后,瞎几把下吧……,实在不行百度 ...

  5. 对象大小对比之Comparable与Comparator

    一 概述 1.Comparable与Comparator使用背景 数值型数据(byte int short long float double)天生可对比大小,可排序,String实现了Compara ...

  6. SQL Server数据类型一览表

    数据类型 类型 描             述 bit 整型 bit 数据类型是整型,其值只能是0.1或空值.这种数据类型用于存储只有两种可能值的数据,如Yes 或No.True 或Fa lse .O ...

  7. 解决Android报错No resource found that matches the given name (at 'text' with value '@string/hello').

    解决Android项目No resource found that matches the given name (at 'text' with value '@string/hello'). 如图, ...

  8. eclipse插件svn和客户端工具TortoiseSvn的版本对应关系

    如果同时使用这两个软件,一定要保证版本的对应关系: 插件svn1.4.x对应TortoiseSvn 1.5.x 插件svn1.6.x对应TortoiseSvn 1.6.x 插件svn1.8.x对应To ...

  9. SQL Server现有表上自增属性增删原理研究

    项目需求:线上有一张表,数据类型为int类型,现在由于项目变更,需要这一列添加自增属性,而且,为了保证能尽快完成,希望使用脚本来实现,而不是在表设计中通过GUI窗口来实现. 问题来了:SQL Serv ...

  10. 操作系统页面置换算法之FIFO,LRU

    #include<iostream> #include<unistd.h> #include<vector> #include<wait.h> #inc ...