• char* 和 QByteArray相互转换遇到的问题总结(转)


    har* 转QByteArray

    如果这样写

    char RECV[10]={'a','b','c','d','e','f','g','h','k','l'};
    QByteArray DataContent = QByteArray(RECV);

    这样得到的结果又可能是错的,需要这样写

    char RECV[10]={'a','b','c','d','e','f','g','h','k','l'};

    QByteArray DataContent = QByteArray(RECV,10)
    QByteArray转 char*

    如果是这样

    strcpy(rebackData,DataContent.data());字符串赋值没问题,结构体赋值就出错了。

    strcpy字符串复制,不仅会复制其字符串就连其结尾的字符‘\0’也会被复制过去,其复制遇到\0后就结束了;

    而memcpy就不一样了,他是内存复制,他不仅可以复制字符串还可以复制任意内容,如字符串数组,结构体等;而且memcpy并不会遇到\0就结束,而是复制你在第三个参数中指定的字节数。

    相对而言,memcpy要比strcpy用途要广泛的多,一般我们只需要复制字符串就可以选择strcpy,但是数组或者结构体,那就不要犹豫了,直接上memcpy吧。

    memcpy_s,strcpy_s函数明确的指定了目标内存的大小,能够清晰的暴露出内存溢出的问题,而普通的strcpy,memcpy则不会。为了保证内存拷贝有足够的空间,防止笔误,尽量使用memcpy_s代替memcpy。

    原文链接:https://blog.csdn.net/foxgod/article/details/91811057

  • 相关阅读:
    Bzoj 1537: [POI2005]Aut- The Bus 题解 [由暴力到正解]
    Bzoj 3126[Usaco2013 Open]Photo 题解
    Bzoj 3165 [Heoi2013]Segment题解
    Bzoj 2733: [HNOI2012]永无乡 数组Splay+启发式合并
    赛前集训前的总结(警醒)
    bzoj3316 JC loves Mkk题解
    9.22考试 crf的军训 题解
    Luogu3521 [POI2011]ROT-Tree Rotations
    CTSC2012 熟悉的文章
    UVA11468 Substring
  • 原文地址:https://www.cnblogs.com/xihong2014/p/16549394.html
Copyright © 2020-2023  润新知