公司最近要求用Qt写程序,最郁闷的就是字符串之间的转化。搞的自己七荤八素的!还好本人耐折腾。。。自己也尝试出了几种Qt自带的转换方法。
#include <QtGui/QApplication>
#include "testqstring.h"
#include "boost/lexical_cast.hpp"
#include <iostream>
#include <string>
#include <stdio.h>
#include <QDebug>
using namespace std;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
testQString w;
w.show();
QString qStr="testString";
qDebug()<<"wyz-------1:"<<qStr;
string str=qStr.toStdString();
cout<<"wyz-------2:"<<str<<endl;
char *cStr;
cStr=(char*)str.c_str();
cout<<"wyz-------3:"<<cStr<<endl;
string str_1="testString2";
QString qStr_1;
qStr_1.sprintf("%s",str_1.c_str());
qDebug()<<"wyz-------4:"<<qStr_1;
return a.exec();
}
运行结果:
Starting /root/testQString-build-desktop/testQString...
wyz-------1: "testString"
wyz-------2:testString
wyz-------3:testString
wyz-------4: "testString2"
int 转 QString
QString & sprintf ( const char * cformat, ... )
string strData= write1.write(smsJson);
strData = boost::erase_all_copy(strData, "\n");
string strTemp= m_qStrInfo.toStdString();
vector<string > splitVec;
boost::split(splitVec, strTemp, boost::is_any_of("\r\n"));
========网上copy来copy去的资料=============
//常用参数类型:char *字符串, QByteArray字符数组, QString字符串
//需要转换:char * ---转--- QByteArray ---需要调用QByteArray类的构造函数
char* --------------QByteArray(const char*)-----------> QByteArray
char* str;
QByteArray byte(str);
char* --------------QString(const char*)-------------->QString
char* str;
QString string(str);
QByteArray -------------data()-------------------->char*
QByteArray byte;
char* str = byte.data();
QByteArray ------------QString()------------------->QString
QByteArray byte;
QString string(byte);
QString --------------toAscii()--------------------> QByteArray
QString string;
QByteArray byte = string.toAscii();
QString -------------qPrintable()------------------>char*
QString string;
char* str = qPrintable(string);
QString s2q(const string &s)
{
return QString(QString::fromLocal8Bit(s.c_str()));
}
string q2s(const QString &s)
{
return string((const char *)s.toLocal8Bit());
}
QByteArray qba = m_pTcpSocket->readAll();
QString strings(qba); //转换成qt字符串
QByteArray qba = tcpSocket->readAll();
char *readStr=qba.data(); //把QByteArray转换成char