我的程序将用户数据作为tuple
并将其存储到vector
。通过添加tuple
s,可以添加vector
个tuple
和tuple
尺寸更改没有限制。该程序询问用户是否要添加另一个#include <iostream>
#include <string>
#include <tuple>
#include <vector>
using namespace std;
void print(vector<tuple<int, string, string, bool>> const & data)
{
if (data.size() != 0)
{
for (auto row : data)
{
cout << get<0>(row) << ", " << get<1>(row) << ", " << get<2>(row)
<< ", " << get<3>(row) << endl;
}
}
else
{
cout << "\nNO ENTRIES CURRENTLY!";
}
}
int main()
{
int id;
char go;
string name, filePath;
bool flag = false;
typedef tuple<int, string, string, bool> pData;
vector<pData> pList;
do
{
cout << "Enter a Pattern Call:" << endl;
cin >> id >> name >> filePath >> flag;
pList.push_back(make_tuple(id, name, filePath, flag));
cout << "Do You wish to add another: ";
cin.ignore();
cin >> go; //The control skips here and exits the loop.
} while (go == 'y' || go == 'Y');
print(pList);
return 0;
}
。如果不是,则循环退出。
我的问题是,当程序应该等待“是”&#39;或者没有&#39;输入,它跳过了cin并退出了循环。
我已经尝试过搜索解决方案,尝试清除缓冲区,但我回到原点。
ionic start
答案 0 :(得分:1)
我有一个hack似乎可以在我的Linux机器上运行。
在console.log
cin.clear()
将cin.ignore()
替换为cin.ignore()
您的部分代码应如下所示:
cin.ignore(1)
答案 1 :(得分:0)
看这里: How do I flush the cin buffer? 如果用户输入不是我们想要的,那么使用cin并不容易或安全。