zoukankan      html  css  js  c++  java
  • 如果我要使用memcpy

    memcpy是物理层次的复制  不管你类型是否统一  我就给你复制了^0^
    这里探讨下常见的情况:
    实例1:

       (LPCWSTR-->LPWSTR)

            ...
        LPCWSTR strConst = L"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        LPWSTR strNormal = new WCHAR[50];

        memcpy(strNormal, strConst, 10);//乱码
            ...
        这说明:从小的size复制到大的size,只复制少部分字符,是不行的。

    实例2:
        (LPCWSTR-->LPWSTR)
            ...
         LPCWSTR strConst = L"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        LPWSTR strNormal = new WCHAR[20];


        int nLenConst = wcslen(strConst);  //很奇怪的现象,这个大小不是你申请的大小
        int nLenNormal = wcslen(strNormal);
        memcpy(strNormal, strConst, nLenNormal);//乱码
            ...
         这说明:从大的size复制到小的size就绝对不行的。

    实例3:

         (LPCWSTR-->LPWSTR)

            ...
        LPCWSTR strConst = L"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        LPWSTR strNormal = new WCHAR[50];


        int nLenConst = wcslen(strConst);
        int nLenNormal = wcslen(strNormal);
        memcpy(strNormal, strConst, 40);   //乱码
            ...

          这说明:从小的size复制到大的size即使复制的字符数比源字符串还多--只要比目标字符串的字符数少就不行。

    实例4:
         
          (LPWSTR-->LPWSTR)

            ...
        LPCWSTR strConst = L"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        LPWSTR strNormal = new WCHAR[50];


        int nLenConst = wcslen(strConst);
        int nLenNormal = wcslen(strNormal);
        memcpy(strNormal, strConst, nLenNormal); //终于正常了
            ...
          这说明:从小的size复制到大的size 且使用目标字符串的len才可以。

         memcpy真叼啊。。要成功使用,还真不是那么简单。


        如果要我使用memcpy,我一定:从小的size复制到大的size,而且第三个参数一定使用目标字符串的大小(这个大小使用wcslen获得的,往往比你申请的要大些)。

  • 相关阅读:
    【hdu2825-Wireless Password】AC自动机+DP
    kuangbin专题十二 HDU1029 Ignatius and the Princess IV (水题)
    Codeforces Round #501 (Div. 3) 1015D Walking Between Houses
    Codeforces Round #501 (Div. 3) 1015A Points in Segments (前缀和)
    POJ2503 Babelfish
    POJ2531 Network Saboteur
    POJ3278 Catch That Cow
    POJ2488 A Knight's Journey
    POJ2456 Aggressive cows
    HDU1425 A Chess Game
  • 原文地址:https://www.cnblogs.com/tupx/p/3434137.html
Copyright © 2011-2022 走看看