将QString转换为char *

官方说明:

How can I convert aQString to char* and vice versa ?(trolltech)

Answer:

In order to convert aQString to a char*, then you first need to get a latin1 representation of thestring by calling toLatin1() on it which will return a QByteArray. Then calldata() on the QByteArray to get a pointer to the data stored in the byte array.See the documentation:

See the following examplefor a demonstration:

int main(int argc, char**argv)

{

 QApplication app(argc, argv);

 QString str1 = "Test";

 QByteArray ba = str1.toLatin1();

 const char *c_str2 = ba.data();

 printf("str2: %s", c_str2);

 return app.exec();  

}

Note that it is necessaryto store the bytearray before you call data() on it, a call like the following

const char *c_str2 =str2.toLatin1().data();

will make the applicationcrash as the QByteArray has not been stored and hence no longer exists.

To convert a char* to aQString you can use the QString constructor that takes a QLatin1String, e.g:

QString string =QString(QLatin1String(c_str2)) ;

 

切记:

注意在调用QByteArray.data()之前,必须要先显示储存这个bytearray。像这样const char *c_str2 = str2.toLatin1().data();

会使程序崩溃,因为QByteArray没有被储存,调用data()前是不存在的,必须先显式调用一次toLatin1(),再调用data()。

 

要将char*转换成QString,用接收QLatin1String作参数的QString构造函数就可以了:

QString string =QString(QLatin1String(c_str2)) ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值