#include <iostream>
#include <string>
#include <memory>

int main()
{
    const int COLS = 5 ;
    using row_type = std::string[COLS] ;

    std::size_t rows ;
    std::cout << "rows? " ;
    std::cin >> rows ;

    {
        row_type* array = new row_type[rows] ;

        // use array
        for( std::size_t i = 0 ; i < rows ; ++i )
            for( std::size_t j = 0 ; j < COLS ; ++j )
                array[i][j] = "hello" ;

        for( std::size_t i = 0 ; i < rows ; ++i )
        {
            for( std::size_t j = 0 ; j < COLS ; ++j )
                std::cout << array[i][j] << ' ' ;
            std::cout << '\n' ;
        }

        delete[] array ;
    }

    // better
    {
        std::unique_ptr< row_type[] > array( new row_type[rows] ) ;

        // use array
        for( std::size_t i = 0 ; i < rows ; ++i )
            for( std::size_t j = 0 ; j < COLS ; ++j )
                array[i][j] = "bonjour" ;

        for( std::size_t i = 0 ; i < rows ; ++i )
        {
            for( std::size_t j = 0 ; j < COLS ; ++j )
                std::cout << array[i][j] << ' ' ;
            std::cout << '\n' ;
        }
    }
}
