zoukankan      html  css  js  c++  java
  • QString字符串中双引号的梗

    【1】QString字符串不支持双引号

    最近做项目(本地环境:WIN10 + QT5.9.2 + VS2017)。有个需求,需要实现形如 "key="123456"" 这样的字符串。

    查了很多资料,发现QString是没法实现愿望的。

    但是,std::string可以实现字符中双引号的夙愿,只要加反斜杠即可。

    于是,有了下面的 Demo示例。

    【2】应用实例

    代码如下(备注:比较简单,仅仅贴cpp文件):

     1 #include <QtWidgets/QApplication>
     2 #include <QDebug>
     3 #include <QString>
     4 #include <QByteArray>
     5 #include <QCryptographicHash>
     6 
     7 int main(int argc, char *argv[])
     8 {
     9     QApplication a(argc, argv);
    10 
    11     QString strQString = "key=4008001234";
    12     QByteArray qstrByte = strQString.toUtf8();
    13     QString strQStringMd5 = QCryptographicHash::hash(qstrByte, QCryptographicHash::Md5).toHex();
    14     qDebug() << "strQStringMd5 :: " << strQStringMd5; // "49b18827db03d50ae206e177391d8b09"
    15 
    16 #if 0
    17     // QT5.4之前的版本,转换方式:
    18     // std::string => QByteArray
    19     QByteArray byteArray(stdString.c_str(), stdString.length());
    20     // QByteArray => std::string
    21     std::string stdString(byteArray.constData(), byteArray.length());
    22 
    23     // QT5.4之后版本,转换方式:
    24     inline std::string QByteArray::toStdString() const
    25     {
    26         return std::string(constData(), length());
    27     }
    28 
    29     inline QByteArray QByteArray::fromStdString(const std::string &s)
    30     {
    31         return QByteArray(s.data(), int(s.size()));
    32     }
    33 #endif
    34     std::string strValue = "key="4008001234"";
    35     QByteArray stdByte = QByteArray::fromStdString(strValue);
    36     QString strStdMd5 = QCryptographicHash::hash(stdByte, QCryptographicHash::Md5).toHex();
    37     qDebug() << "strStdMd5 :: " << strStdMd5; //"f43fa89e23dae10edc6545ebb14aada9"
    38     
    39     return a.exec();
    40 }

    总结:QString的确不支持双引号,但是可以变换思路,为了构建QByteArray类型的参数,我们可以使用std::string实现字符串中双引号的梦想。

    【3】调试结果

    有人或许看了上面实例会反问,仅仅从加密得出的字符串不同就可以判定后者是加了双引号吗?的确说服力不够。

    从哪里可以确定加密的字符串是加双引号的呢?正如博客首页所述:编码以明志,调试而致远。

    可以看看下面的两张调试截图:

    (1)QString字符串转换为QByteArry后的结果

    (2)std::string字符串转换为QByteArray后的结果

    相信这样可以更笃定,且更喜欢调试的魅力。

    Good Good Study, Day Day Up.

    顺序  选择  循环  总结

  • 相关阅读:
    常见jvm命令
    服务后台启动
    kafka创建topic,生产和消费指定topic消息
    kafka-manager安装
    修改ssh主机名
    设置虚拟机静态ip
    kafka术语
    cas和oauth2的区别
    会Python的大学生,步入职场将会非常抢手!
    python爬虫把url链接编码成gbk2312格式过程解析
  • 原文地址:https://www.cnblogs.com/Braveliu/p/9484760.html
Copyright © 2011-2022 走看看