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();


  • 相关阅读:
    __dict__和dir()的区别:未完
    [leetcode] Subsets II
    [leetcode] Decode Ways
    [leetcode] Gray Code
    [leetcode] Merge Sorted Array
    [leetcode] Partition List
    [leetcode] Scramble String
    [leetcode] Maximal Rectangle
    [leetcode] Remove Duplicates from Sorted List II
    [leetcode] Remove Duplicates from Sorted List
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/12889629.html
Copyright © 2011-2022 走看看