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. 【数据库】8.0 MySQL入门学习(八)——创建并使用数据库、获得数据库和表的信息

    1.0 使用SHOW语句找出服务器上当前存在什么数据库: mysql> SHOW DATABASES; 每台机器上的数据库列表是不同的,但是很可能有mysql和test数据库.mysql是必需的 ...

  2. css3制作有动画效果的面板

    .show-panel .slide-panels{ right: 0px; } .slide-panels{ z-index: 101; background: #fff; position: fi ...

  3. Android实现双进程守护

    做过android开发的人应该都知道应用会在系统资源匮乏的情况下被系统杀死!当后台的应用被系统回收之后,如何重新恢复它呢?网上对此问题有很多的讨论.这里先总结一下网上流传的各种解决方案,看看这些办法是 ...

  4. 跨平台移动开发_PhoneGap 使用Geolocation基于所在地理位置坐标调用百度地图API

    使用Geolocation基于所在地理位置坐标调用百度地图API 效果图 示例代码 <!DOCTYPE html> <html> <head> <title& ...

  5. 生成对抗式网络 GAN的理解

    转自:https://zhuanlan.zhihu.com/p/24767059,感谢分享 生成式对抗网络(GAN)是近年来大热的深度学习模型.最近正好有空看了这方面的一些论文,跑了一个GAN的代码, ...

  6. 浅谈SQL Server中的事务日志(五)----日志在高可用和灾难恢复中的作用

    简介 日志的作用是保证持久性和数据一致性,通过日志可以实现数据的Undo与Redo,因此通过日志,SQL Server不仅仅可以实现灾难恢复,还可以通过日志的Redo来实现高可用性.本篇文章主要讲述日 ...

  7. matlab中fprintf函数的具体使用方法

    matlab中fprintf函数的具体使用方法实例如下: fprintf函数可以将数据按指定格式写入到文本文件中.其调用格式为: 数据的格式化输出:fprintf(fid, format, varia ...

  8. ORACLE_LPAD_FUNCTION

    Oracle / PLSQL: LPAD Function This Oracle tutorial explains how to use the Oracle/PLSQL LPAD functio ...

  9. ABAP git客户端

    Jerry习惯把自己写的小程序放到自己的github上:https://github.com/i042416 对于写的ABAP程序,需要先把SAPGUI里的代码手动拷贝到本地,然后用git客户端pus ...

  10. python入门4 python查看数据类型及类型转换

    查看数据类型:type() 类型转换:int(),float(),char(),ord(),str(),bool() #coding:utf-8 #/usr/bin/python "&quo ...