我正和我的朋友在一个学校项目上工作,我们希望我们的程序从用户获取整数值并将其存储在向量中,只要用户输入一些值并在用户停止输入数字时退出循环输入。
这是我的第一个示例代码无限下载:
while(cin>>x){
v.push_back(x);
}
有一个条件是数字必须大于1但输入大于0的整数值,所以我的第二个代码是,但它不起作用,它也无限地继续。
这是我的示例代码:
while(cin>>x){
if(x<0){
break;
}
else{
v.push_back(x);
}
}
请提前感谢我提出解决方案:)
答案 0 :(得分:1)
最重要的部分是清楚地描述你想要的东西。该程序必须具备终止的条件。
两个想法:
用户输入以空格分隔的整数值,然后按Enter键
用户输入一个整数,按回车键继续。一旦他按两次输入,它就会终止。
怎么做:
简单地使用带字符串的cin,按空格分隔,然后转换为整数。
将cin与字符串一起使用,但正如您现在所做的那样,询问该字符串是否为&#34;&#34;,如果没有转换为整数。
答案 1 :(得分:0)
不完全确定,但我认为你的意思是读取行然后提取整数?如果是这样,尝试这样的事情 - 没有错误检查,它将简单地丢弃第一个非整数的所有内容。我遗漏了异常,没有使用和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;
}
答案 2 :(得分:0)
在使用Aziuth's 建议并对Topcoder和Codechef等网站以及其他竞争性编程网站进行一些研究后,我认为我找到了一个解决方案而无需使用字符串。它会获取所有输入值,直到输入换行符。非常感谢大家对这个问题的时间和知识。
代码是:
while(1){
cin>>x;
v.push_back(x);
char ch = getchar();
if(ch=='\n')
break;
}