QString,char*,string之间的互相转换

本文介绍QString与string之间的互相转换方法,并演示了如何将QString和string类型的数据转换为char*类型,适用于跨语言数据交互场景。

QString转换为char*(注意两句不能连起来)

QString qstr;
...
QByteArray ba = qstr.toLatin1();//合起来写会有乱码
char* s = ba.data();

string转换为char*

string str;
...
char *s =str.c_str()

QString与string互相转换

QString qstr;
string str;
...
str = qstr.toStdString();
...
qstr = QString::fromStdString(str);
### char*[] 转 QString 可以遍历 `char*[]` 数组,将每个 `char*` 元素转换为 `QString`,再根据需求进行拼接。以下是示例代码: ```cpp #include <QString> #include <iostream> int main() { const int size = 3; char* charArray[size] = { (char*)"Hello", (char*)" ", (char*)"World" }; QString result; for (int i = 0; i < size; ++i) { result.append(QString::fromUtf8(charArray[i])); } std::cout << result.toStdString() << std::endl; return 0; } ``` 这里使用了 `QString::fromUtf8` 方法将 `char*` 转换为 `QString`,如果 `char*` 存储的是其他编码的字符,可以选择合适的转换方法,如 `fromLocal8bit` 等。 ### QStringchar*[] 可以先将 `QString` 按需求分割成多个 `QString` 子串,再将每个子串转换为 `char*`。以下是示例代码: ```cpp #include <QString> #include <iostream> #include <vector> int main() { QString str = "Hello World"; QStringList list = str.split(" "); std::vector<char*> charArray; for (const QString& subStr : list) { QByteArray ba = subStr.toUtf8(); char* ch = new char[ba.size() + 1]; std::strcpy(ch, ba.data()); charArray.push_back(ch); } for (char* ch : charArray) { std::cout << ch << std::endl; delete[] ch; // 释放动态分配的内存 } return 0; } ``` 这里使用了 `QString::split` 方法将 `QString` 按空格分割成多个子串,再使用 `toUtf8` 方法将子串转换为 `QByteArray`,最后将 `QByteArray` 的数据复制到 `char*` 中。需要注意的是,使用 `new` 动态分配了内存,使用完后要使用 `delete[]` 释放内存,避免内存泄漏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值