求教!怎么实现字节数组的加减

求教!如何实现字节数组的加减
刚学C++不久,遇到一个问题,向各位论坛老鸟们请教一下。

比如我有一串字节{1,2,3,4,5},那么我把它放入一个字节数组:
byte a[5]={1,2,3,4,5};
一会儿,我需要在其末尾添加另一串字节,比如{6,7},那么写成
a=a+{6,7};
是肯定错的,一方面a的长度固定,不可增加,另一方面,C++中的数组变量其实是一个指针,对于一个指针,自加一个集合,这肯定是非法的。

那么有什么方法能实现类似
??? a={1,2,3,4,5};
a=a+{6,7};
使得最后a的值为{1,2,3,4,5,6,7}

因为程序需要Unicode字符集,所以用wstring或CString中转不太可行,况且还需要一个额外的char[]变量辅助,比较麻烦,因为仅仅是需要在一小段代码中使用,所以没有必要构造新类重载运算符,
故求教有没有比较简单可行的方法。
字节集 数组 字节集 数组

------解决方案--------------------
如果完全是char型数组的话,通过malloc申请,把两者连结起来.

1)数组a,数组b
2)malloc 数组c,其长度为a+b
3)c的开始部分赋为a,后续部分赋为b

如果你的编译器支持c99,那么可以支持变长数组.用变量表示a的长度.操作起来更快捷.
------解决方案--------------------
仅供参考
//输出PROG中有但LIST中没有的文本行,即集合PROG-LIST
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <search.h>
#define MAXCHARS 512
int MAXLINES=10000,MAXLINES2;
char *buf,*buf2;
char PROG[256]="PROG";//程序Program需要的文件列表
char LIST[256]="LIST";//dir /b /s生成的实际文件列表List
FILE *fp,*fl;
int i,c,n,L,hh;
int ignore_case=0;
char ln[MAXCHARS];
int icompare(const void *arg1,const void *arg2) {
   return stricmp((char *)arg1,(char *)arg2);
}
int compare(const void *arg1,const void *arg2) {
   return strcmp((char *)arg1,(char *)arg2);
}
int main(int argc,char **argv) {
    if (argc>1) strcpy(PROG,argv[1]);//命令行参数1覆盖PROG
    if (argc>2) strcpy(LIST,argv[2]);//命令行参数2覆盖LIST
    if (argc>3) ignore_case=1;//若存在命令行参数3,忽略大小写
    if ((fl=fopen(LIST,"rt"))==NULL) {
        fprintf(stderr,"Can not open %s\n",LIST);
        fprintf(stderr,"Usage: %s [PROG] [LIST] [-i]\n",argv[0]);
        return 1;
    }
    if ((fp=fopen(PROG,"rt"))==NULL) {
        fclose(fl);
        fprintf(stderr,"Can not open %s\n",PROG);
        fprintf(stderr,"Usage: %s [PROG] [LIST] [-i]\n",argv[0]);
        return 2;
    }
    buf=(char *)malloc(MAXLINES*MAXCHARS);
    if (NULL==buf) {
        fclose(fl);
        fclose(fp);
        fprintf(stderr,"Can not malloc(%d LINES*%d CHARS)!\n",MAXLINES,MAXCHARS);
        return 4;
    }
    n=0;
    hh=0;