如何由qstring转化为char数组
qstring转化为char数组:
QString str="12fff";
QByteArray ba=str.toLatin1();
char *c=ba.data();
解析:
toLatin1QString转QByteArray的方法,Latin1代表ASCII。
const char*:指向字符常量的指针
const char * ss= "xxxxxx";
表示的是指针指向的内容不可修改。
char * const ss = "xxxxxx";
表示这是一个指针常量,再不能指向其他地址,比如ss= ...是不允许的。
const char * const ss ="" ;
指针不可修改,指向的内容也不可以修改。
扩展资料:
char数组转化成为QString:
char c[]="12ff";
QString str=QString(QLatin1String(c));
对于字符串的:
/0 表示结束符,比如C语言加的数组中,最后有个默认的 /0 表示结束。
/0 不是空格,’ ’ 才是空格。
“” 就是“一个空的字符串”。
可以参考下面的代码:
先将QString转换为QByteArray,再将QByteArray转换为char *
view plain
//#include "teclass.h"
#include <QtGui/QApplication>
#include <QtDebug>
#include <QString>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QString str = “hello”; //QString转char *
QByteArray ba = str.toLatin1();
char *mm = ba.data();
qDebug()<<mm<<endl; //调试时,在console中输出
return a.exec();
}
扩展资料:
char数组转化成为QString:
char str[64];
QTextCodec *textcod = QTextCodec::codecForName("GBK");
QCString string1 = textcod ->fromUnicode(listbox1->currentText());
strcpy(str,string1);
QString和Std::string
从char*到 QString可以从fromLocal8Bit()转化
std::string有c_str()的函数使再转化为char*
Qstring str;
char* ch;
QByteArray ba = str.toLatin1();
ch=ba.data();
这样就完成了QString向char*的转化。经测试程序运行时不会出现bug
注意第三行,一定要加上,不可以str.toLatin1().data()这样一部完成,可能会出错。
补充:以上方法当QString里不含中文时,没有问题,但是QString内含有中文时,转换为char*就是乱码,采用如下方法解决:
方法1:
添加GBK编码支持:
#include <QTextCodec>
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
然后改变上面的第三行为:QByteArray ba = str.toLoacl8Bit(); toLoacl8Bit支持中文
方法2:
先将QString转为标准库中的string类型,然后将string转为char*,如下:
std::string str = filename.toStdString();
const char* ch = str.c_str();