Как увеличить размер динамического масива типа 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;