• QString转化为char *的方式


    Qt帮助文档中给的一个demo

    QString tmp = "test";
    QByteArray text = tmp.toLocal8Bit();
    char * pCh = new char[text.size()+1];
    strcpy(pCh, text.data());
    delete [] data;

    别的文章中也给出了一些方法

       char *chStr = NULL;
       QByteArray ba = str.toLatin1();
       chStr = (char *)malloc(ba.length() + 1);
       memset(chStr, 0, ba.length());
       memcpy(chStr, ba.data(), ba.length());
       chStr[ba.length()] = '';

    上面的代码可以进一步优化

       char *chStr = NULL;
       QByteArray ba = str.toLatin1();
       chStr = (char *)malloc(ba.length() + 1);
       memset(chStr, 0, ba.length() + 1); //既然分配了这么多就全memset掉,官方帮助文档没有使用memset,估计是它分配的内存全部给用上了。人家有这个自信~
       memcpy(chStr, ba.data(), ba.length() + 1);//既然ba.data()的最后也是‘’,就直接全拷贝好了

    ps:

    说到new之后memset,可以采用更简单的方式来实现:

    char *p = new char[10]();

    它等价于

    char *p = new char[10];
    memset(p, 0, 10);
  • 相关阅读:
    C#三元运算符
    WIN系统查询版本
    C# switch 语句
    C#反编译
    AssemblyInfo.cs 文件信息
    win系统如何在桌面显示我的电脑
    MVC传值前台
    js去除html标记
    打开页面跳转到区域下的控制器
    Hive常用操作之数据导入导出
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/13184760.html
Copyright © 2020-2023  润新知