xiaohuanghuang_ 2021-05-29 11:06 采纳率: 71%
浏览 18

为什么输入一空行会使该代码直接结束?我用了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()其实是为了读取一个回车。

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

  • 写回答

1条回答 默认 最新

  • qfl_sdu 2021-05-29 11:17
    关注

    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; 
    }
    评论

报告相同问题?

悬赏问题

  • ¥15 咨询一下有关于王者荣耀赢藏战绩
  • ¥100 求购一套带接口实现实习自动签到打卡
  • ¥50 MacOS 使用虚拟机安装k8s
  • ¥500 亚马逊 COOKIE我如何才能实现 登录一个亚马逊账户 下发新 COOKIE ..我使用下发新COOKIE 导入ADS 指纹浏览器登录,我把账户密码 修改过后,原来下发新COOKIE 不会失效的方式
  • ¥20 玩游戏gpu和cpu利用率特别低,玩游戏卡顿
  • ¥25 oracle中的正则匹配
  • ¥15 关于#vscode#的问题:把软件卸载不会再出现蓝屏
  • ¥15 vimplus出现的错误
  • ¥15 usb无线网卡转typec口
  • ¥30 怎么使用AVL fire ESE软件自带的优化模式来优化设计Soot和NOx?