为什么输入一空行会使该代码直接结束?我用了cin.clear()

// instr3.cpp -- reading more than one word with get() & get()
#include <iostream>
int main()
{
    using namespace std;
    const int ArSize = 20;
    char name[ArSize];
    char dessert[ArSize];

    cout << "Enter your name:\n";
    cin.get(name, ArSize);    // read string, newline
    cout << "Enter your favorite dessert:\n";
	cin.clear();
    cin.get(dessert, ArSize).get();
    cout << "I have some delicious " << dessert;
    cout << " for you, " << name << ".\n";
    cin.get();
    return 0; 
}

cin.clear不是可以恢复get设置的失效位吗?

我理解的cin.clear相当于在cin,get(arraryName,arrarySize)后又加了一个.get(),我理解的这个多加的.get()其实是为了读取一个回车。

大伙可以告诉我我理解的那有错吗?

cin.get() 函数读取单个字符,读取字符串需要cin.getline()。代码修改如下:如有帮助,请采纳一下,谢谢。

#include <iostream>
int main()
{
	using namespace std;
	const int ArSize = 20;
	char name[ArSize];
	char dessert[ArSize];
	cout << "Enter your name:\n";
	cin.getline(name,ArSize);
	//cin.get(name, ArSize);    // read string, newline
	cout << "Enter your favorite dessert:\n";
	cin.clear();
	cin.getline(dessert, ArSize);
	//cin.get(dessert, ArSize).get();
	cout << "I have some delicious " << dessert;
	cout << " for you, " << name << ".\n";
	cin.get();
	return 0; 
}