社区
C++ 语言
帖子详情
请问c++如何追加分配空间,比如开始为字符串str[]分配了5个char,如何使其变为10个char
nol
2004-10-17 11:27:37
xiexie
...全文
363
11
打赏
收藏
请问c++如何追加分配空间,比如开始为字符串str[]分配了5个char,如何使其变为10个char
xiexie
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
aiguo26
2004-10-18
打赏
举报
回复
vb里面用redim a(大)可以动态实现
c++里,要用string类型类型了
或者,先删除后拷贝
seilfer2000
2004-10-18
打赏
举报
回复
建立一个10个字符的字符串,将原来的5个字符拷贝过来,删除原有的字符串
joyfire
2004-10-18
打赏
举报
回复
标准stl库的string
ftkghost
2004-10-18
打赏
举报
回复
void *realloc( void *memblock, size_t size ); (stdlib.h或malloc.h中)
重新分配存储器块,若成功则返回指向该存储器块的指针,否则返回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];我就不知道怎么弄了,听高手怎么说
game_zhang
2004-10-18
打赏
举报
回复
保存原来的!
申请大空间!
再复制回去!
zhanghk
2004-10-18
打赏
举报
回复
这要看你怎么实现了,参考一下MFC的CString
whoho
2004-10-18
打赏
举报
回复
如果使用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
xuzheng318
2004-10-18
打赏
举报
回复
感觉 seilfer2000(郁闷,疯狂学习中) 方法很好实现,又容易理解
支持!
pc2s
2004-10-18
打赏
举报
回复
楼主是不是想问C++里面如何实现C中的realloc()?
nickshen
2004-10-18
打赏
举报
回复
如果是指针型的,就是要你分配个大内存,将你原来内容拷贝过来,然后删除原来的内存
动态分配类型如string,carray,vector等实际上本质和上面都是一样的,只不过用户用的方便些,所以支持动态分配内存的动态数组,最好也要设大点,不然会降低效率的
carylin
2004-10-18
打赏
举报
回复
可以用string类型啊,它支持动态分配内存:使用成员函数:string::reserve(int)
char
*
str
和
char
str
[]的区别
char
str
[]="abcdef",这个数组的存储
空间
是在栈中开辟的,也就是说它的每个元素一次为'a','b','c','\0',将这几个值复制到
str
的位置中。 对于
char
*
str
="abcdef",
str
指向的是静态存储区,"abcdef"是位于常量区的,指针
str
只是指向了这个位置。注意:它与上面的复制不是一回事。既然位于常量区,那么这些值就不能被修改。而上面数组中,要
深入分析
C++
中
char
*
str
和
char
str
[]的区别
前段时间去阿里云实习生笔试,考了一道要求用递归实现
字符串
反转的问题:输入
char
*
str
="abcedf",打印输出"fedcba"。 我在VS2008平台上编写例程如下: View Code 1 #include "stdafx.h" 2 #include
str
ing.h> 3 4
char
* reverse(
char
*
str
) 5 { 6 int le
字符指针
char
*
str
、字符数组
char
str
[]、(
字符串
)指针数组
char
*
str
[]
#include <stdio.h> #include <stdlib.h> #include <
str
ing.h> int main(void) { /*字符指针*/ /*
字符串
指针变量本身是一个变量,用于存放
字符串
的首地址。而
字符串
本身是存放在以该首地址为首的一块连续的内存
空间
中并以 \0 作为串的结束。*/ //方法一: //
char
*ps = "bcd";//1.
分配
内存给字符指针;2.
分配
内存给
字符串
;3.将字符.
char
str
[] 和
char
*
str
的区别(p66程序员面试宝典)
char
str
[] 和
char
*
str
的区别 http://blog.csdn.net/hackbuteer1/article/details/6706562 [cpp] view plaincopy
char
* get_
str
(void) {
char
str
[] = {"abcd"}; retu
char
*
str
和
char
str
[]的区别
char
*
str
和
char
str
[]的区别 转载▼ 本文转自:http://blog.csdn.net/andysun1986/article/details/6941230 我记得很久以前我也遇到过这个问题,后来也是如下解决的,只是不记得写个日志,今天转发了一个博客作为笔记! 要求用递归实现
字符串
反转的问题:输入
char
*
str
="abcdef",
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章