1、std::string 转 int、double、float
auto n = std::stoi(str); //int
auto d = std::stod(str); //double
auto f = std::stof(str);//float
2、int、double、float 转 std::string
std::string strNum = to_string(num);
3、QString 转 int、float、double、int64_t
QString strNumber;
int nNum = strNumber.toInt();
float fNum = strNumber.toFloat();
double dNum = strNumber.toDouble();
int64_t n64Num = strNumber.toLongLong();
科学计数法形式转换
bool ok;
double dNum = QString("1234.56e-02").toDouble(&ok); //ok=true;dNum=12.3456
4、int、float、double 转 QString
//变量a为int或float或double
long a = 63;
//方法1:
QString strNum = QString::number(a);
//方法1,也可写成 QString::number(a, 10)或QString::number(a, 16),10和16为进制
//方法2:
QString strNum = QString("%1").arg(a);
5、std::string 转 QString
std::string str;
QString qstr = QString::fromStdString(str);
6、QString 转 std::string
QString qstr;
std::string str = qstr.toStdString();
7、QString 转 char*
//方法1:
QString qstrName;
const char* pName = qstr.toLocal8Bit().data();
//方法2:
const char* pName = qstr.toStdString().data();
//方法3:
const char* pName = qstrName.toStdString().c_str();
//方法2和方法3是将QString先转换成std::string再转char*
•string.data() 仅返回字符串内容(char*)
•string.c_str() 返回带有结束符 的字符数组(char*)
8、char* 转 QString
const char* pName = "";
QString qstrName = QString(QLatin1String(pName));
9、const wchar_t* 转 QString
wchar_t wcharName[128];
const wchar_t* pStrName = wcharName;
QString str = QString::fromWCharArray(pStrName);
10、QString 转 const wchar_t*
//方法1:
QString qstrName;
std::wstring wstrName = qstrName.toStdWString();
const wchar_t* pName = wstrName.c_str();
//方法2:
std::string str = std::string(qstrName.toLocal8Bit());
std::wstring wStrName(str.begin(), str.end());
const wchar_t* pName = wStrName.c_str();