社区
C++ 语言
帖子详情
请问c++如何追加分配空间,比如开始为字符串str[]分配了5个char,如何使其变为10个char
nol
2004-10-17 11:27:37
xiexie
...全文
288
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)
青少年
C++
编程NOIP/CSP竞赛通关语法-
字符串
1、本课程为零基础
C++
语法专题课,是青少儿参加信息学奥赛NOIP/CSP需要学习的语法专题课; 2、本课程每节课均配有练习题以及真题,以锻炼孩子的解题能力; 3、本课程是基于小学生的认知发展水平开发的,运用孩子生活...
C/
C++
字符串
分配
空间
字符串
分配
位置。 const
char
* global_
str
= "abc.global"; int main() { const
char
* local_
str
= "abc.dd";
char
array_
str
[] = "abc.cc"; int i = 19; int ai[10]; int* ip = &i;
char
* p_global_
str
= co...
C++
字符串
与字符数组 详解
在
C++
中,有两种类型的
字符串
表示形式: C-风格
字符串
C++
引入的
str
ing类 C-风格
字符串
C 风格的
字符串
起源于 C 语言,并在
C++
中继续得到支持。
字符串
实际上是使用 null 字符 ‘\0’ 终止的一维字符数组。因此,一个以 null 结尾的
字符串
,包含了组成
字符串
的字符。 下面的声明和初始化创建了一个 “Hello”
字符串
。由于在数组的末尾存储了空字符,所以...
C++
中在
字符串
中提取子
字符串
C++
中在
字符串
中提取子
字符串
从
字符串
中提取子
字符串
是指将一个
字符串
中的一部分截取下来形成一个新的
字符串
。 #include <io
str
eam> int main(int argc,const
char
* argv[]) { std::
str
ing
str
1 = "Hello World!"; /* 定义一个新的
字符串
str
2,其内容被初始化成
字符串
str
1的第0个字符...
C++
如何做
字符串
分割(5种方法)
1、用
str
tok函数进行
字符串
分割 原型:
char
*
str
tok(
char
*
str
, const
char
*delim); 功能:分解
字符串
为一组
字符串
。 参数说明:
str
为要分解的
字符串
,delim为分隔符
字符串
。 返回值:从
str
开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。 其它:
str
tok函数线程不安全,可以使用
str
tok_r替代。 示例: //借助
str
tok实现split #include <
str
ing.h> #include <stdio.h&
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章