Входной и выходной массив строк, которые выделяются динамически - PullRequest
0 голосов
/ 07 мая 2020

В основном, используя динамическое c распределение, я хочу ввести 5 имен, а затем распечатать их.

Код:

int main()
{
    char* names = new char[5];
    string name;

    for (int i=0; i<5; i++) 
    {
        gets(name);
        names[i] = name;
    }

    for (int i=0; i<5; i++) 
    {
        cout << names[i] << endl;
    }

    delete [] names;
    return 0;
}

Он говорит, что я не могу преобразовать строку в char *.

Строки, которые я хочу ввести, содержат пробелы, например: Боб Смит.

1 Ответ

0 голосов
/ 07 мая 2020

Вот C ++ эквивалент того, что вы пытаетесь сделать. Сообщите нам, если это не решит вашу проблему (например, класс, в котором профессор считает, что C ++ - это всего лишь C с дополнительными материалами).

#include <iostream>
#include <string>
#include <vector>

constexpr unsigned int NUM_NAMES = 5;

int main()
{
    std::vector<std::string> names;

    for (unsigned int i = 0; i < NUM_NAMES; ++i)
    {
        std::string name;
        std::getline(std::cin, name);
        names.push_back(name);
    }

    for (const auto & name : names)
    {
        std::cout << name << "\n";
    }

    return 0;
}

Протестировал это и запустил следующее: I / O:

john smith
BOB VILLA
homer SiMpSoN
Spongebob Squarepants (lives in a pineapple etc etc)
FooBar McBizBaz
john smith
BOB VILLA
homer SiMpSoN
Spongebob Squarepants (lives in a pineapple etc etc)
FooBar McBizBaz

...