【问题标题】:Split array char拆分数组字符
【发布时间】:2011-04-08 13:35:05
【问题描述】:

如何将一个数组字符拆分为另外两个数组字符? 例如:

字符数组1[9]={10011010}; 字符数组2[5],数组3[5];

现在我想将 1001 放入 array2 并将 1010 放入 array3 我怎么能提出这个要求?

【问题讨论】:

    标签: c++ arrays


    【解决方案1】:

    很多方法。我想到的两个是memcpystd::copy

    #include <cstring>
    memcpy(array2, array1, 4);
    memcpy(array3, array1+4, 4);
    

    #include <algorithm>
    std::copy(array1, array1+4, array2);
    stdd::copy(array1+4, array1+8, array3);
    

    从您的数组大小看来,您保留的字节数比您需要的多一个字节。除了简单的数组之外,也许这些是字符串?如果是这样,请记住在使用它们之前在数组末尾放置一个空字节:

    array2[4] = 0;
    array3[4] = 0;
    

    【讨论】:

      【解决方案2】:

      您可以使用for loopmemcpy 或 STL 的copy algorithm

      【讨论】:

        【解决方案3】:

        嗯,你的第一个数组是 9 个字符。如果你把它一分为二,一个必须是 5 个字符,一个必须是 4 个字符。这应该可以解决问题:

        char array1[9] = {'1', '2', '3', '4', '5', '6', '7', '8', '9'}; // not a null-terminated string
        int len = sizeof(array1)/sizeof(array1[0]);
        int len1 = len / 2;
        int len2 = len - len1;
        char* array2 = new char[len1];
        char* array3 = new char[len2];
        
        memcpy(array2, array1, len1);
        memcpy(array3, array1 + len1, len2);
        

        【讨论】:

        • 如果第二个 new 抛出,则存在内存泄漏。
        • 当然可以,但这不是重点。我很确定您可以在人们在网络上发布的大多数示例中找到类似的问题。例如,您可以使用 std::vector 而不关心分配内存,并且您不会在那里遇到此类问题;我的示例是对一种可能的解决方案的快速参考。
        猜你喜欢
        • 1970-01-01
        • 2018-06-09
        • 1970-01-01
        • 2013-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-10
        • 1970-01-01
        相关资源
        最近更新 更多