0

基本上,使用动态分配,我想输入 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*。

我要输入的字符串有空格,例如:Bob Smith。

4

1 回答 1

0

这是您正在尝试做的 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

于 2020-05-07T17:27:59.970 回答