以下摘抄自网络
Qt的QString与string相互转换
- QString与int相互转换
//int 转 QStting
QString qstr = QString::number(123);
//QStting 转 int
int i = atoi(qstr.toStdString().c_str()); //方法1
int i = atoi(qstr.ascii()); //方法2
- QString与std::string 相互转换
//QString转string
string s = qstr.toStdString();
//string转QString
QString qstr2 = QString::fromStdString(s);
- string、wstring 相互转换(wstring是为了用宽字符存储中文,可参考文章)
//将string转换成wstringwstring common::string2wstring(string str)
{
wstring result;//获取缓冲区大小,并申请空间,缓冲区大小按字符计算int len = MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), NULL, 0);TCHAR* buffer = new TCHAR[len + 1];//多字节编码转换成宽字节编码MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), buffer, len);buffer[len] = '\0'; //添加字符串结尾//删除缓冲区并返回值result.append(buffer);delete[] buffer;return result;
}//将wstring转换成string
string common::wstring2string(wstring wstr)
{
string result;//获取缓冲区大小,并申请空间,缓冲区大小事按字节计算的int len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), NULL, 0, NULL, NULL);char* buffer = new char[len + 1];//宽字节编码转换成多字节编码WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), buffer, len, NULL, NULL);buffer[len] = '\0';//删除缓冲区并返回值result.append(buffer);delete[] buffer;return result;
}