只要用户输入,如何从用户那里获取整数?

How to take integers from user as long as user enters?

本文关键字:用户 那里 获取 整数 输入      更新时间:2023-10-16

我和我的朋友一起做一个学校项目,我们希望我们的程序从用户那里获取整数值并将其存储在向量中,只要用户输入一些值并在用户停止输入数字时退出输入循环。

这是我的第一个示例代码,它无限持续:

while(cin>>x){
v.push_back(x);
}

有一个条件是数字必须大于 1,但输入的整数值大于 0,所以我的第二个代码是但它不起作用,而且它也

无限持续。这是我的示例代码:

while(cin>>x){
if(x<0){
break;
}
else{
v.push_back(x);
}
}

请提前向我建议解决方案:)

对你来说,最重要的部分是清楚地描述你想要什么。程序必须具有终止的某种条件。

两个想法:

  1. 用户输入以空格分隔的整数值,然后按回车键

  2. 用户输入一个整数,按回车键并继续。只要他按两次回车键,它就会终止。

怎么做:

  1. 简单地将 cin 与字符串一起使用,用空格分隔,然后转换为整数。

  2. 将 cin 与字符串一起使用,否则就像您现在所做的那样,如果不转换为整数,请询问字符串是否为 "。

不完全确定,但我认为你的意思是阅读行然后提取整数?如果是这样,请尝试这样的事情 - 没有错误检查,它只会丢弃第一个非整数中的所有内容。我省略了例外,没有使用和for_each或lambdas或任何花哨的东西。希望对您入门有用。

#include <iostream>
#include <vector>
#include <sstream>
#include <string>

std::vector<int> getUserInput(){
std::vector<int> result;
std::string s;
std::getline(std::cin, s);
std::istringstream is(s);
while(is){
int value;
is >> value;
if(is) result.push_back(value);
}
return result;
}
int main(int,char**){
std::vector<int> userValues = getUserInput();
std::cout << "User input values:n";
for(int value : userValues) std::cout << value << 'n';
return 0;
}

在使用Aziuth的建议并在Topcoder和Codechef等网站以及其他竞争性编程网站上进行了一些研究之后,我想我找到了不需要使用字符串的解决方案。它采用所有输入值,直到输入换行符。非常感谢大家为这个问题付出的时间和知识。

代码为:

while(1){
cin>>x;
v.push_back(x);
char ch = getchar();
if(ch=='n')
break;
}
相关文章: