Динамическое выделение памяти под массивы char C++

Хочу создать динамический массив у̶к̶а̶з̶а̶т̶е̶л̶е̶й̶ на строки char без использования string и vector и самостоятельно их заполнить, а затем вывести их на экран. Недавно начал изучать плюсы и захотелось именно таким образом попробовать создать массив со строками.

#include <iostream>
const int size = 4;

int main()
{
    system("chcp 1251");
    system("cls");
    char* pt = new char[size];
    for (int i = 0; i < size; ++i)
    {
        std::cout << "Введите строку: " << std::endl;
        std::cin.getline(pt+i, 20);
    }

    for (int i = 0; i < size; ++i)
    {
        std::cout << "Строка: "<< (pt+i) << std::endl;
    }

    return 0;
}

Но, к сожалению, он не выводит на экран полностью отдельные строки. Подскажите, где ошибка.

введите сюда описание изображения


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

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

Попробуйте так:

char** pt = new char*[size];
for (int i = 0; i < size; ++i)
{
    char buf[100];
    std::cout << "Введите строку: " << std::endl;
    std::cin.getline(buf,100);
    pt[i] = new char[strlen(buf)+1];
    strcpy(pt[i],buf);
}

for (int i = 0; i < size; ++i)
{
    std::cout << "Строка: "<< pt[i] << std::endl;
}
→ Ссылка