QString 和 stl::string 选择和转换
2017-11-11 本文已影响7人
赵者也
QString 和 stl::string
QString,优于 STL 中的字符串类型,因为它有丰富的 API 且更容易使用。它的实现支持延迟写时复制(lazy copy-on-write)和隐式共享(implicit sharing),所以函数能够接收 QString 类型的实参并返回 QString 类型的值,而不必每一次都为字符串分配内存并进行复制。此外,QString 还内置支持 Unicode 标准,以便程序的国际化。
在使用 Qt 和 C++ 进行开发的时候,由于 QString 和 stl::string 两者的数据类型不完全相同,需要进行转换。下面介绍 QString 和 stl::string 类型相互转换的方法:
1、在头文件中添加inlucde信息和转换函数声明:
#include <QString>
#include <vector>
#include <iostream>
#include <string>
using namespace std;
QString s2q(const string &s);
string q2s(const QString &s);
2、在 CPP 实现文件中添加以下转换函数即可:
QString s2q(const string &s) {
return QString(QString::fromLocal8Bit(s.c_str()));
}
string q2s(const QString &s) {
return string((const char *)s.toLocal8Bit());
}