只要用户进入,如何从用户那里获取整数?
问题描述:
我正在和我的朋友一起开展一个学校项目,我们希望我们的程序从用户那里获取整数值,并将其存储在向量中,只要用户输入一些值并在用户停止输入数字时退出输入循环。只要用户进入,如何从用户那里获取整数?
这是我的第一个样本代码的推移无限:
while(cin>>x){
v.push_back(x);
}
有一个条件,该号码必须大于一,但在整数值输入大于0,所以我的第二个代码,但它不工作,它也无限地继续下去。
这是我的示例代码:
while(cin>>x){
if(x<0){
break;
}
else{
v.push_back(x);
}
}
请给我建议的解决方案在此先感谢:)
答
不完全确定,但我认为你的意思是像读取行然后提取整数?如果是这样,尝试这样的事情 - 没有错误检查,它会放弃从第一个非整数的一切。我没有使用例外,也没有使用for_each或lambda或任何幻想。希望能对你的入门有所帮助。
#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's建议和做像TopCoder公司和Codechef和其他有竞争力的编程网站网站经过一番研究,我想我找到了一个解决方案,而无需使用一个字符串。它将输入所有输入值,直到输入换行符。非常感谢每个人在这个问题上的时间和知识。
的代码是:
while(1){
cin>>x;
v.push_back(x);
char ch = getchar();
if(ch=='\n')
break;
}
什么构成了用户的输入的结束? – Ron
当用户停止输入数字并按回车键。 – BugAdder
你怎么会猜测,他按下输入后不会再输入任何项目? – VTT