Как увеличить размер динамического масива типа char?

Например у меня есть масив типа char И вводят текст и если длина текста больше за размер масива видает ошибку как мне увеличить размер етого масива?

    int main(){
    char *k=new char[5];
    cin>>k;
    cout<<k;

    }

И когда я ввожу слово больше чем размер масива видает ошибку heap


Ответы (1 шт):

Автор решения: afjord

Автор, вопрос только в том, что именно вам можно использовать. Вот решение на довольно низком уровне. Считывание будет происходить по одному символу из консоли, до получения символа \n. Но это всё можно не городить, а сразу читать в строку.

int cap = 5;
char *k = new char[cap]();
char *tmp;
int cur;
int i = -1;

while ((cur = std::cin.get()) != 10) {
    k[++i] = static_cast<char>(cur);
    if (i == cap - 1) {
        tmp = new char[cap * 2]();
        memcpy(tmp, k, cap);
        cap *= 2;
        delete[] k;
        k = tmp;
    }
}
std::cout << k;
delete[] k;
→ Ссылка