C++如何获取缓冲区使用大小

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;
}