我想定义一个结构struct
{
   char a[];
   int i;
};但是数组都是要定长的,有什么办法能实现上面的情况,我在程序中动态加入字符数组的内容(不定长), 因为可能a[1]={'a','b'}  a[2]={'a','a','a'}请各位指点迷津,谢谢

解决方案 »

  1.   

    如何定义?我知道在C++库中有vector.h,但是我在VC中加入这个头文件为什么不认,谢谢还有其他更好的办法吗? vector的速度如何?谢谢
      

  2.   

    struct data
    {
       char *a;
       int i;
    };构造函数 , new或a = NULL;
    每次 delete, new
    构造函数 
    if(NULL != a)
    {
    delete [] a;
    a = NULL;
    }
      

  3.   

    http://www.csdn.net/develop/read_article.asp?id=18154
      

  4.   

    const UINT MAXLEN 10
    struct array {
      char *p[MAXLEN];
      int i;
    };
    array a;
    a.p[0] = new char[2];
    a.p[1] = new char[3];
    这样行不行啊?
      

  5.   

    楼上的,您的new char[2]还是定义了长度啊
      

  6.   

    #include <vector>using namespace std;这样应该就能用vector了
      

  7.   

    动态数组用法;
    int x = 4;
    char * p = new char[x];//与char[4] 似, 
    用完后
    delete [] p;
      

  8.   

    如果自己写,可以这样:
    struct YourStruct;
    {
    private:
       char *p;
       int iMaxLength;
       int i;
    public:
       BOOL SetBuff(char *pBuff,int iLength);
       YourStruct();
       ~YourtStruct();
    };YourStruct()
    {
       p = NULL;
       iMaxLength = 0;
    }
     
    ~YourStruct()
    {
        delete [] p;
        p = NULL;
        iMaxLength = 0;
    }BOOL YourStruct::SetBuff(char *pBuff,int iLength)
    {
        if(iMaxLength<iLength)
        {
            p = realloc(p,iLength);
            if(!p)
              return FALSE;
            iMaxLength = p;
        }
        p = pBuff;
        return TRUE;    
    }   
      

  9.   

    出现一点问题:
    BOOL YourStruct::SetBuff(char *pBuff,int iLength)
    {
        if(iMaxLength<iLength)
        {
            p = realloc(p,iLength);
            if(!p)
              return FALSE;
            iMaxLength = iLength;
        }
        p = pBuff;
        return TRUE;    
    }
      

  10.   

    据说STL中不支持RTTI,这样在VC里面就无法序列化,真TMD的不爽,还不如去用CArray
      

  11.   

    vector应用举例:vector <string> text; //创建一个string的vector
    string word;
    while(cin>>word)
    {
        text.push_back(word);
        //...
    }cout<<"words read are: \n";  //读取并显示
    for(vector<string>::iterator it = text.begin(); it!=text.end(); ++it)
         cout<<*it<<' ';
    cout<<endl;
    //iterator是标准库中的类,具有指针的功能