QString和char *转换

本文展示了一个简单的示例,说明如何将QString类型的数据转换为char*类型。具体步骤包括使用toLatin1()函数将QString转换为QByteArray,然后通过data()函数获取char*类型的指针。
QString menu_name_back = "abc";
QByteArray ba = menu_name_back.toLatin1();
char *path = ba.data();

将QString转换成了char *
### 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` 等。 ### QString 转 char*[] 可以先将 `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[]` 释放内存,避免内存泄漏。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值