zoukankan      html  css  js  c++  java
  • Qt中将QString转换为char *或者相反

    1.将QString转换为std::string,可以通过QString的成员函数toStdString()

    QString Qstr="123";std::string str=Qstr.toStdString();


    2.将QString转换为char *或者相反

    直接转换不行,因为QString没有提供直接的成员函数,但是可以通过QByteArray中转一下,例如:
    int main(int argc, char **argv)
    {
    QApplication app(argc, argv);
    QString str1 = "Test";
    QByteArray ba = str1.toLatin1();
    const char *c_str2 = ba.data();
    printf("str2: %s", c_str2);
    return app.exec();
    }

    还有其他多种方法:

    方法一 -----------------------------------------
    #define G2U(s) ( QTextCodec::codecForName("GBK")->toUnicode(s) )
    #define U2G(s) ( QTextCodec::codecForName("GBK")->fromUnicode(s) )

    QString str;
    QCString cstr;

    str = G2U("中文输入");
    cstr = U2G(str);

    QCString有这样一个重载运算符
    operator const char * () const

    可以这样
    printf("%s ", (const char*) cstr);
    或是copy出来
    char buf[1024];
    strcpy(buf, (const char*) cstr);


    方法二 -----------------------------------------

    如果是中文系统 直接用 (const char*) str.local8Bit()
    例如
    printf("%s", (const char*) str.local8Bit());

    str是一个QString


    方法三 -----------------------------------------
    char str[64];
    QTextCodec *textcod = QTextCodec::codecForName("GBK");
    QCString string1 = textcod ->fromUnicode(listbox1->currentText());
    strcpy(str,string1);

    QString和Std::string

    从char*到 QString可以从fromLocal8Bit()转化std::string有c_str()的函数使再转化为char*QString有toAscii()记不清了


    你可以看看.


    又是我的粗心酿成大错,我重新查看了一下Qt文档,原来Qt可以直接从std::wstring产生一个QString,用QString::fromStdWString(const std::wstring &)这个静态成员函数即可。我试了试用std::string的c_str()返回的char *构造的QString不能再保存原先的中文信息,而用std::wstring构造的QString则可以用qDebug()输出原先的中文信息GB编码与UTF8编码的转换在主函数app后加上这句:

    QUOTE:

    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));

    然后是从UTF8编码到GB编码的字符串转换方法:

    QUOTE:


    QString Utf8_To_GB(QString strText)
    {
    return QString::fromUtf8(strText.toLocal8Bit().data());
    }

    至于从GB到UTF8,那大家就经常用了:

    QUOTE:

    QString GB_To_Utf8(char *strText)
    {
    return QString::fromLocal8Bit(strText);
    }
    http://www.cppblog.com/wicbnu/archive/2011/03/16/141956.aspx

  • 相关阅读:
    day 66 ORM django 简介
    day 65 HTTP协议 Web框架的原理 服务器程序和应用程序
    jQuery的事件绑定和解绑 事件委托 轮播实现 jQuery的ajax jQuery补充
    background 超链接导航栏案例 定位
    继承性和层叠性 权重 盒模型 padding(内边距) border(边框) margin 标准文档流 块级元素和行内元素
    属性选择器 伪类选择器 伪元素选择器 浮动
    css的导入方式 基础选择器 高级选择器
    03-body标签中相关标签
    Java使用内存映射实现大文件的上传
    正则表达式
  • 原文地址:https://www.cnblogs.com/leijiangtao/p/4459649.html
Copyright © 2011-2022 走看看