c++ - Char在循环中读取数据时获取垃圾值
问题描述
我在循环读取数据时遇到问题。尽管在我看来代码很好,但对于某些测试用例,它会崩溃。这是简化的程序代码。
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
string str1, str2, str3;
char choice;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> choice;
cin.ignore();
getline(cin, str1);
if (choice == 'a') {
getline(cin, str2);
getline(cin, str3);
// ...
// operations not related to data input
// ...
} else if (choice == 'b') {
getline(cin, str2);
// ...
// operations not related to data input
// ...
} else if (choice == 'c') {
// ...
// operations not related to data input
// ...
}
}
return 0;
}
选择的输入值始终是“a”、“b”或“c”,但在程序期间它有时会得到其他值。我尝试改用 scanf ,但它并没有改变结果。有谁知道如何解决这个问题?
解决方案
推荐阅读
- javascript - 如何从引导程序 4 输入文件中清除任何其他先前选择的文件
- python - 负面回顾没有按预期工作
- javascript - 为什么我的阵列在拼接后没有更新?
- javascript - 使用 smtpJs 发送电子邮件时出错 (JavaScript)
- django - Django:模板中的 Crispy 表单验证错误
- javascript - 子元素包含标签时下划线模板双父p标签
- java - 我的 IntelliJ 似乎找不到我的 csv 文件?
- image - 为什么 PyCharm 笔记本中不显示降价图像?
- vb.net - 从字符串中删除文本直到“-”
- excel - 修复工作表中堆栈空间外的错误_选择更改