c++ - 更好的方法,而不是在 C++ 中使用 cin.ignore
问题描述
int test, flag = 0;
cin >> test;
while (test--)
{
if (flag == 0)
cin.ignore(256, '\n'); // using because of whitespace reading due to cin
string check;
getline(cin, check);
checkPangram(check, check.size());
flag++;
}
如果我删除第 4 行,那么这个程序不会读取几个测试用例字符串,所以我使用标志值在启动时只执行第 4 行一次。如果你能帮我找到任何通用方法,读取字符串(带空格),这样我即使在 cin 或 getline 之后也可以读取而不会丢失任何输入
解决方案
cin.ignore()
您可以在进入循环之前简单地调用:
int test;
if (cin >> test)
{
cin.ignore(numeric_limits<streamsize>::max(), '\n');
while (test--)
{
string check;
getline(cin, check);
checkPangram(check, check.size());
}
}
或者,您可以使用a从第一行读取std::getline()
所有输入:std::istringstream
test
int test;
string check;
getline(cin, check);
istringstream iss(check);
if (iss >> test)
{
if (test--)
{
getline(iss, check);
checkPangram(check, check.size());
while (test--)
{
getline(cin, check);
checkPangram(check, check.size());
}
}
}
推荐阅读
- wordpress - 自定义文件中未定义的函数 wp_redirect()
- typescript - 在无服务器框架中转译非导入的打字稿文件
- teradata - 将一些字符替换和掩码为 char
- python - Pycharm不读取python文件而没有错误
- flask - 使用 Flask 在 SQLAlchemy 中按布尔列排序
- android - 如何修复将 compileSdkVersion 从 28 更改为 29 的错误
- ruby-on-rails - Ruby 更新值内的现有哈希值
- typescript - 验证表单字段是否小于角度反应形式中的另一个
- github - 在 GitHub 拉取请求中禁用“隐藏对话”?
- python - How to fill column in dataframe with repeating value a certain number of times?