资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

请问c++如何追加分配空间,比如开始为字符串str[]分配了5个char,如何使其变为10个char

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

xiexie

网友回答:

发表者:seilfer2000

建立一个10个字符的字符串,将原来的5个字符拷贝过来,删除原有的字符串

发表者:nickshen

如果是指针型的,就是要你分配个大内存,将你原来内容拷贝过来,然后删除原来的内存  
  动态分配类型如string,carray,vector等实际上本质和上面都是一样的,只不过用户用的方便些,所以支持动态分配内存的动态数组,最好也要设大点,不然会降低效率的

发表者:whoho

如果使用char[],没有什么办法可以达到,除非:  
      char   buf[5];  
      char   *pt=new   char[10];  
      memcpy(pt,   buf,   5);  
      然后用pt  
  如果使用new   char[],那就   这样  
      char   *buf   =   new   char[5];  
      ...  
      char   *pt   =   buf;  
      buf   =   new   char[10];  
      memcpy(buf,   pt,   5);  
      delete[]pt;  
   
  如果上述不是char   或者其他内置类型,memcpy改成  
    std::copy

发表者:ftkghost

void   *realloc(   void   *memblock,   size_t   size   );        
  重新分配存储器块,若成功则返回指向该存储器块的指针,否则返回NULL  
   
  下面的代码中内存区域buffer的大小从存放5个char改为能存放10个char:  
  并且原来的5个char不改变      
  #include<iostream>  
  #include<malloc.h>  
   
  int   main()  
  {  
          char*   buffer;  
          buffer=(char*)malloc(5*sizeof(char));       //注意:下面用realloc函数其中申请空间也是用malloc的所以这里不应该用new;而且下面应该用free来释放空间  
          buffer[0]=a;  
          buffer[1]=b;  
          buffer[2]=c;  
          buffer[3]=d;    
          buffer[4]=   ;        
          std::cout<<buffer<<std::endl;  
          buffer=(char*)realloc(buffer,10   *   sizeof(char));  
          buffer[5]=e;  
          buffer[6]=f;  
          buffer[7]=g;  
          std::cout<<buffer<<std::endl;  
          free(buffer);  
          system("Pause");  
          return   0;      
  }  
   
  但是如果一开始如果是char   buffer[5];我就不知道怎么弄了,听高手怎么说  
 


 

 
热门推荐笔记本: IBM笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved