关于两次使用getline()只能输入一次的问题

用了两次getline()函数 调试的时候发现第一次根本没有接受输入直接返回ming字串为“”
而第二次可以输入一行字串以回车结束 是为什么呢??

 while (cin >> choice){
        if (choice == 1){
            cout << "输入明文:\n";
            string ming;
            getline(cin, ming);
            cin.sync();
            cout << "输入密文:\n";
            string mi;
            cin.sync();
            getline(cin, mi);       
            string str = miyao(ming, mi);
            cout << "求出的密钥为:\n";
            printstr(str);
        }
        ……
        }

2个回答

cin >> choice之后还有一个回车在缓冲区中。

RaspberryMonster
cyannnn 谢谢哈!
接近 5 年之前 回复

楼上说的很对,可以试试cin.ignore()语句清空缓冲区

RaspberryMonster
cyannnn 谢谢~
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐