提问人:Ryan Goods 提问时间:12/20/2022 最后编辑:Ryan Goods 更新时间:12/20/2022 访问量:55
如何使 std:::cin 将输入到第一个非整数,然后丢弃其余的?
How can I make std:::cin take input up to the first non-integar and then discard the rest?
问:
这
此代码当前的作用方式是,如果输入非数字,它将设置错误标志,清除错误然后忽略。
但是,如果用户输入一个数字,后跟一个非数字,例如 2garbage1,它将成功并将 5 传递到第一个变量 \n 中,将 garbage1 传递到第三个变量中。
>
do {
std::cout << "\n\nPlease Enter the number of Names you would like to store: ";
std::cin >> noOfNames; // get user input for the number of names the user would like to enter.
if (!(valid_input = std::cin.good())) { // if valid input does not = true
std::cout << "That input is invalid!\n";
std::cin.clear(); //Clear stream to remove error flag
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // ignore everything and deliminate with \n
}
} while (!valid_input);
for (int i = 0; i < noOfNames; i++) //forloop which will iterate through the number of names getting user input on each iteration
{
std::cout << "Enter name #" << i + 1 << ": "; // the i + 1 will avoid displaying name #1 as name #0 since i begins at 0
std::cin >> tempName; // get user input and store it in tempName
vec2.push_back(tempName); // add tempName to vec2
}
如果输入 2garbage1,它将输出以下内容:
“请输入您要存储的名称数量:2garbage1
名称 #1 = 名称 #2 =
垃圾 1
显然这并不理想,我想在最终数字之后丢弃任何东西。
链接和资源,以便我也可以阅读/观看有关该主题的视频,我将不胜感激,我似乎无法在谷歌上找到我正在寻找的内容,即使我找到了,我也想了解代码在做什么。
答: 暂无答案
评论
std::cin