【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.

顺序  选择  循环  总结

转载于:https://www.cnblogs.com/Braveliu/p/9484760.html

QString字符串中双引号的梗相关推荐

  1. 处理json字符串中双引号转义

    1.前台传过来的字符串,通过JSON.parseArray转为集合 import com.alibaba.fastjson.JSON; List<Subject> subjectList ...

  2. powerdesigner mysql 反引号,String字符串去掉双引号

    public static String stringReplace(String str) { //去掉" "号 String str= str.replace("\& ...

  3. python 输出引号_python输出字符串单双引号如何选择

    在Python当中字符串的输出既可以使用单引号,也可以使用双引号,使用单引号或双引号是没有区别的:当使用双引号将输出的字符串括起来时,内部也可使用单引号,将单双引号匹配正确即可. 在Python中我们 ...

  4. php中双引号的区别,PHP中单引号和双引号的区别

    好久没有写博客了,都忘了积累知识啦--现在开始全新的生活,重拾记录的习惯.今天要写的就是PHP中单引号和双引号的区别.在PHP中,我们可以使用单引号或者双引号来表示字符串.不过我们作为开发者,应该了解 ...

  5. php的字符串、双引号输出变量的问题、转义字符

    字符串 php中字符串可以用单引号和双引号表示,但单引号效率比双引号高,因为单引号是真正的字符串,双引号要做运算,即将字符串中的变量替换成值,单引号不需要 看下面的例子 <?phpheader( ...

  6. VB小技巧:字符变量中双引号的输入

    '如要输入表示    "aa" '理论表达方式如: a=""aa""  '但会出错 'ASC码可能达到效果 kk=chr(34)   &am ...

  7. python字符串加双引号是什么意思_python字符串表示什么?

    原标题:python字符串表示什么? python的字符串就是表示一串字符,字符可以是中文,英文或者数字,或者混合的文本. python字符串的几种表达方式 1 使用单引号扩起来字符串 >> ...

  8. mysql中双引号和单引号有什么区别

    mysql中双引号和单引号有什么区别 前2天看到有人问,mysql中双引号和单引号有什么区别? 希望大家可以关注下公众号,支持一下,鞠躬感谢~ 我就直接po代码和截图了,如下 select * fro ...

  9. php语言中双引号的作用是什么,php中的单引号与双引号作用详解

    一.引号定义字符串 在Php中,通常一个字符串被定义在一对引号中,如: 'I am a string in single quotes' "I am a string in double q ...

  10. android 字符串 双引号,如何将TextView 字符串添加“” 双引号

    如何将TextView字符串添加双引号,例如"我是谁" 之前有些人提议写在布局文件里面 例如: android:text="点击"\我\" 但是很抱歉 ...

最新文章

  1. 实现 strStr()
  2. LeetCode 2166. 设计位集(Bitset)
  3. LeetCode 1408. 数组中的字符串匹配(暴力查找)
  4. python背景图片加载代码_2019.12.05-背景图片设置代码
  5. 计算机工程说课稿,人教版数学说课稿集合五篇
  6. yii2 Rbac使用yii命令一键建表
  7. 完全卸载vs2013 2015
  8. matlab教程 当当,MATLAB实用教程(第4版)
  9. 原生代码开发小米官网首页
  10. 亚马逊dynamo高可用性关键字仓库
  11. SparkStreaming面试题
  12. 腾讯面试题、智力题、Java:小Q的父母要出差N天,走之前给小Q留下了M块巧克力
  13. UBC 计算机专业 要求 英语 A,赴加拿大留学语言成绩的要求
  14. 以低字节为字地址是什么意思?
  15. 如何打破微信不能群发群消息的局限
  16. Altium 设置覆铜与板框间距
  17. 高等数学-微分方程思维导图
  18. Java操作redis设置第二天凌晨过期
  19. Java学习路线(22)——测试框架Junit
  20. 【python】练习:长度转换

热门文章

  1. TMS320C55x汇编语言编程
  2. 常用Physionet命令整理
  3. docker pull命令入门
  4. scala数组入门到熟悉
  5. 如何在Ubuntu中重置MySQL Root密码
  6. linux内存管理之uboot第一步
  7. SharePoint Framework 基于团队的开发(一)
  8. IoC容器9——基于注解的容器配置
  9. 剑指offer二:替换空格
  10. VMware esxi 4.0如何更换序列号