C++我需要开一个char数组(可能很大), 要在读入每个字符前确定数组大小,怎么做啊?
c++无法在读入字符前确定数组大小, 你只有先设置好数组大小
可以使用用动态数组顺序表和链表,用malloc函数动态分布一个初始大小的数组,定义一个变量来记录大小,若是数组长度不够可以使用relloc函数进行增加
既然是c++,为什么不用stl库,用vector
开始时可以用malloc申请一个空间,每次读取后,根据长度和当前已用大小决定是否扩容,扩容用realloc实现。
假设从标准输入流读取数据,实例代码如下:
#include <iostream>
using namespace std;
int main()
{
int size = 10;
char* buf = (char*)malloc(size); //开始时申请10个空间大小
char ch;
int i = 0;
while (1)
{
cin.get(ch); //读取1个字符
if (ch == '\n') //读取到回车符结束读取
{
buf[i] = '\0';
break;
}
else
{
if (i == size - 2) //如果空间不足,扩容,用size-2是因为要给\0留一个位置
{
size = size + 10; //每次多增加10个空间,可根据自己的需要调整
buf = (char*)realloc(buf, size);
}
buf[i] = ch;
i++;
}
}
cout << buf << endl;
free(buf); //释放空间
return 0;
}