QString::toUtf8是输出UTF-8编码的字符集
QString::toLatin1是相当与ASCii码不包含中文的遇到中文默认转换为ascii码0x3f也就是字符’?‘
QString::Local8bit是本地操作系统设置的字符集编码,一般为GB2312.
qstring 转char数组
QString strOWPName = tr("N你好");
char m_chOWPName[OWPNAME_LEN];
memset(m_chOWPName,0, OWPNAME_LEN);
QByteArray ba = strOWPName.toUtf8(); //安全,中文不乱码
char *pba = ba.data();
memcpy(m_chOWPName,pba,OWPNAME_LEN);
或者一步到位:
memcpy(m_chOWPName, strOWPName.toUtf8().data(), OWPNAME_LEN);
或者
strcpy_s(m_chOWPName,OWPNAME_LEN,dlg.m_strOWPName.toUtf8().data());
char 数组转qstring:
QString strOWPName;
char m_chOWPName[OWPNAME_LEN] = {"aN你好"};
strOWPName = QString::fromUtf8(m_chOWPName,OWPNAME_LEN);//安全,中文不乱码
QString 转 char *指针
第一种办法:toUtf8 //中文不乱码
QString strString;
QByteArray ba = strString.toUtf8();
char *ch = ba.data();
第二种办法:先转成标准库string,中文不乱码
QString strString;
std::string str = strString.toStdString();
const char* chstr = str.c_str();
char *指针 转 QString
使用静态函数fromUtf8 中文不乱码,首选
char *string;
QString strString = QString::fromUtf8(string);
QString转QByteArray
QString str(“hello”);
QByteArray bytes = str.toUtf8(); //按照Utf-8编码转换,可以转换中文 首选
QByteArray转QString
QByteArray bytes("hello world");
QString str = QString::fromUtf8(bytes); //可以显示中文 首选
QString转QStringList
split函数用于拆分字符串,需要传入一个分隔符
QString str = "name1,,name2,name3";
QStringList list1 = str.split(",");
QStringList转QString
join 函数将 QStringList 中的所有字符串用一个分隔符连接起来变成一个字符串
QStringList list;
list<< "name1" << "name2" << "name3";
QString str = list.join(","); //str="name1,name2,name3"
Qt字节数组和十六进制的转换
QByteArray data("hello world");
QString hex = data.toHex();