Qstring转其他



Qt中 int ,float ,double转换为QString

有两种方法

1.使用

QString::number();

如:

  1. long a = 63;  
  2. QString s = QString::number(a, 10);             // s == "63"  
  3. QString t = QString::number(a, 16).toUpper();     // t == "3F"  
long a = 63;
QString s = QString::number(a, 10);             // s == "63"
QString t = QString::number(a, 16).toUpper();     // t == "3F"
(解释,变量a为int型或者float,double。10和16为进制) toUpper是大写

2.使用

  1. long a = 63;  
  2. QString s = QString("%1").arg(a);  
long a = 63;
QString s = QString("%1").arg(a);
这个嘛,我不常用


把QString转换为 double类型

方法1.

  1. QString str="123.45";  
  2. double val=str.toDouble(); //val=123.45  
QString str="123.45";
double val=str.toDouble(); //val=123.45


方法2.很适合科学计数法形式转换

  1. bool ok;  
  2. double d;  
  3. d=QString("1234.56e-02").toDouble(&ok); //ok=true;d;12.3456.  
bool ok;
double d;
d=QString("1234.56e-02").toDouble(&ok); //ok=true;d;12.3456.


 

把QString转换为float形

1.

  1. QString str="123.45";  
  2. float d=str.toFloat(); //d=123.45  
QString str="123.45";
float d=str.toFloat(); //d=123.45

2.

  1. QString str="R2D2";  
  2. bool ok;  
  3. float d=str.toFloat(&ok); //转换是被时返回0.0,ok=false;  
QString str="R2D2";
bool ok;
float d=str.toFloat(&ok); //转换是被时返回0.0,ok=false;

把QString形转换为整形

1.转换为十进制整形

注意:基数默认为10。当基数为10时,并且基数必须在2到36之

间。如果基数为0,若字符串是以0x开头的就会转换为16进制,若以0开头就转换为八进制,否则就转换为十进制。

  1. Qstring str="FF";  
  2. bool ok;  
  3. int dec=str.toInt(&ok,10); //dec=255 ; ok=rue  
  4. int hex =str.toInt(&ok,16); //hex=255;ok=true;  
Qstring str="FF";
bool ok;
int dec=str.toInt(&ok,10); //dec=255 ; ok=rue
int hex =str.toInt(&ok,16); //hex=255;ok=true;


3.常整形转换为Qstring形

  1. long a =63;  
  2. QString str=QString::number(a,16); //str="3f";  
  3. QString str=QString::number(a,16).toUpper(); //str="3F";  
long a =63;
QString str=QString::number(a,16); //str="3f";
QString str=QString::number(a,16).toUpper(); //str="3F";


Qstring 转换char*问题!

方法一:

  1. QString qstr("hello,word");  
  2. const char * p = qstr.toLocal8Bit().data();  
QString qstr("hello,word");
const char * p = qstr.toLocal8Bit().data();


方法二:
  1. const char *p = qstr.toStdString().data();  
const char *p = qstr.toStdString().data();


转换过来的是常量

把当前时间转化为QString...

public QDateTime qdate = QDateTime.currentDateTime();
datetime = qdate.toString("yyyy年MM月dd日ddddhh:mm:ss");
如果不是QTime和QDate类比如说:通过TCP/IP接收到的char unsigned char 类等如何转换为QString类
QString Time2String( DWORD dwTime)
{
char cTime[50] = {0};
memset(cTime,0,50);
strftime(cTime,32,"%Y-%m-%d %H:%M:%S",localtime(&time_t(dwTime)));
return QString(cTime);
}

<think>好的,用户问的是关于“Qstring ”的问题,看起来可能是指Qt框架中的QString类型换。首先,我需要确定用户的具体需求,可能他们遇到了将QString换为其他数据类型(如int、double、std::string等)的问题,或者相反。 首先,回忆一下QString的基本知识。QString是Qt中用来处理Unicode字符串的类,提供了丰富的API进行字符串操作和换。常见的换场景包括与基本数据类型的互,比如整数、浮点数,以及与标准库字符串类型的换,比如std::string和std::wstring。 接下来,需要分情况讨论。例如,将QString换为整数,可以使用toInt()方法,但要注意是否换成功,因为如果字符串不是有效的整数,换会失败。这时候需要传递一个bool指针来检查成功与否。同样,换为double则用toDouble()方法。 另外,QString与std::string的换涉及到编码问题。Qt默认使用UTF-8,所以在换为std::string时,通常使用toStdString()方法,但需要注意编码是否一致,特别是在处理非ASCII字符时。同样,从std::string换回QString可以使用fromStdString()。 还有可能用户需要将QString换为其他类型,比如QByteArray,或者是格式化字符串。例如,使用arg()方法进行格式化,或者处理日期时间格式的换,这时候可能需要使用QDateTime和相关的解析方法。 另外,用户可能对错误处理不太清楚,比如换失败时的处理方法,或者性能方面的考虑。例如,频繁换大量数据时,需要注意效率问题。 还需要考虑跨平台的情况,比如在不同系统中字符编码的处理是否一致,确保换后的字符串不会出现乱码。 最后,可能需要提供一些示例代码,让用户更直观地理解如何实现这些换。例如,展示如何将QString为int,并检查是否成功,或者如何与标准库字符串进行互。 总结一下,回答需要覆盖常见的换场景,包括基本数据类型、标准库字符串、字符数组,以及格式化换和错误处理,同时提供示例代码和注意事项,确保用户能够全面理解并正确应用这些换方法。</think>关于 **QString 换**,这是 Qt 框架中处理字符串的核心类 `QString` 与其他数据类型之间的换问题。以下是分步说明: --- ### 一、QString 与其他数据类型的换 #### 1. **基本类型 → QString** - **整数/浮点数字符串**: ```cpp int num = 42; QString str = QString::number(num); // 结果: "42" double pi = 3.14159; QString strPi = QString::number(pi, 'f', 2); // 结果: "3.14"(保留2位小数) ``` #### 2. **QString → 基本类型** - **字符串整数/浮点数**: ```cpp QString str = "100"; bool ok; int num = str.toInt(&ok); // 检查 ok 是否为 true 确保换成功 double val = str.toDouble(&ok); ``` --- ### 二、QString 与标准库字符串的换 #### 1. **std::string ↔ QString** - **std::string QString**: ```cpp std::string stdStr = "Hello"; QString qStr = QString::fromStdString(stdStr); ``` - **QString std::string**: ```cpp QString qStr = "World"; std::string stdStr = qStr.toStdString(); ``` #### 2. **const char* ↔ QString** - **const char* QString**: ```cpp const char* cStr = "Qt"; QString qStr = QString::fromUtf8(cStr); // UTF-8 编码 ``` - **QString const char***(需为 `QByteArray`): ```cpp QString qStr = "Example"; QByteArray byteArray = qStr.toUtf8(); const char* cStr = byteArray.constData(); ``` --- ### 三、格式化字符串 使用 `QString::arg()` 进行参数替换: ```cpp int x = 5, y = 10; QString result = QString("坐标: (%1, %2)").arg(x).arg(y); // 结果: "坐标: (5, 10)" ``` --- ### 四、编码处理 Qt 默认使用 **UTF-16** 编码存储字符串。与非 Unicode 编码互时需指定编码方式: ```cpp QString str = "中文"; QByteArray gb18030Data = str.toLocal8Bit(); // 本地编码(如 GB18030) QString decodedStr = QString::fromLocal8Bit(gb18030Data); ``` --- ### 五、高级换场景 #### 1. **QString 与 JSON/XML** - 使用 `QJsonDocument` 处理 JSON: ```cpp QJsonObject json; json["name"] = "Alice"; QJsonDocument doc(json); QString jsonStr = doc.toJson(QJsonDocument::Compact); ``` #### 2. **日期时间换** - 使用 `QDateTime`: ```cpp QDateTime now = QDateTime::currentDateTime(); QString dateStr = now.toString("yyyy-MM-dd hh:mm:ss"); ``` --- ### 六、注意事项 1. **编码一致性**:跨平台或跨语言通信时,需统一字符编码(如 UTF-8)。 2. **性能优化**:频繁操作大量数据时,优先使用 `QStringRef` 或 `QLatin1String`。 3. **异常处理**:换失败时(如非数字字符串数值),检查返回值或通过 `bool` 参数判断。 --- 通过上述方法,可高效完成 `QString` 与其他数据类型的互。如需具体场景的代码示例,请进一步说明需求!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vqt5_qt6

你的鼓励是我们创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值