c++简单问题,代码清晰,求解!

分别用char数组和string类型编写代码,使他们输出相同。


#include<iostream>
#include<string>
int main()
{
    using namespace std;
    string name;
    string dessert;

    cout << "Enter your name:\n";
    getline(cin,name);
    cout << "Enter your favorite desseert:\n";
    getline(cin,dessert);
    cout << "I have some delicious " << dessert;
    cout << " for you," << name << ".\n";
    return 0;
}

图片说明

#include<iostream>
#include<string>
int main()
{
    using namespace std;
    const int AirSize = 20;
    char name[AirSize];
    char dessert[AirSize];

    cout << "Enter your name:\n";
    cin.getline(name,AirSize);
    cout << "Enter your favorite desseert:\n";
    cin.getline(dessert,AirSize);
    cout << "I have some delicious " << dessert;
    cout << " for you," << name << ".\n";
    return 0;
}

图片说明
哪里不对,麻烦指出.谢谢

 #include<iostream>
#include<string>
int main()
{
    using namespace std;
    string name;
    name.resize(20);
    string dessert;
    dessert.resize(20);
    cout << "Enter your name:\n";
    cin.getline((char *)name.c_str(), 20);
    cout << "Enter your favorite desseert:\n";
    cin.getline((char *)dessert.c_str(), 20);
    cout << "I have some delicious " << dessert;
    cout << " for you," << name << ".\n";
    return 0;
}

string 跟 char*
没有任何的区别.
只不过你用char*接受输入的时候需要设定array size。
你可以动态定义也可以静态。

你的第一个输入,在名字之后有一个ZZ,我不知道那是什么东西。按理说getline默认的delimeter是一个\n。如果你newline,他就会结束exe那行getline code。
第二个是没有什么问题的,唯一的问题可能是只接受一个20char的array。

直接从cin接受input 和getline没什么太大区别。

cout << "....";
cin >> str1;
cout << "...";
cin >> str2;

cout << "..." << str1 << "..." << str2 << "...\n";