zoukankan      html  css  js  c++  java
  • Qt-char*与QString互转

    相关资源:https://blog.csdn.net/qq_20553613/article/details/78774476

    1.char* 转QString

    方法一:直接用QString的构造函数转换,如下:

    char* ch = "acuity";//这种写法在我的QT中报  error: C2440: “初始化”: 无法从“const char [7]”转换为“char *”
    QString str(ch);//error: C2040: “str”:“QString”与“char *”的间接寻址级别不同
    方法二:用QString的静态转换函数获取,如fromUtf8()、fromLocal8bit()、fromUtf16(),如下:

    char sTest[] = "abc";
    char *pTest = sTest;
    QString qTest = QString::fromUtf8(pTest);


    2.QString 转char*

    方法一:借助QByteArray类,也是本人用得最多的方法,如下:

    QString qTest("abc");
    char* pTest;
    QByteArray baTest = qTest.toLatin1();
    pTest = baTest.data();

    第三行一般加上,整合一条语句(pTest=qTest.toLatin1().data())有时会出问题。以上对应英文/ASII码来说,如果涉及中文,建议通用用utf-8格式,可以避免莫名其妙的乱码现。这一点在代码编辑上建议也是使用utf-8格式。如下:

    QString qTest("abc中文");
    char* pTest;
    QByteArray baTest = qTest.toUtf8();
    pTest = baTest.data();

    方法二:

    对于涉及中文情况,也可以先将QString转换为标准库string类型,然后再将string转换为char*。如下:

    QString sTest("abc中文");
    std::string ssTest = sTest.toStdString();
    const char* ch = ssTest.c_str();


  • 相关阅读:
    10 个你需要了解的 Linux 网络和监控命令
    U盘安装 bt5
    SpringCloud RabbitMQ 使用
    两个大数相乘笔试题目
    activemq 话题模式(三)
    activemq 队列模式(二)
    activemq 安装 (一)
    安装mysql5.7时缺少my.ini文件
    linux 远程rsa 登录配置 文件 /etc/ssh/sshd_config
    java -jar 解决占用终端问题
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/12889629.html
Copyright © 2011-2022 走看看