只要用户输入,如何从用户那里获取整数?
How to take integers from user as long as user enters?
我正在和我的朋友一起做一个学校项目,我们希望我们的程序从用户那里获取整数值并将其存储在一个向量中,只要用户输入一些值并在用户停止输入时退出输入循环数字。
这是我的第一个无限运行的示例代码:
while(cin>>x){
v.push_back(x);
}
有一个条件,数字必须大于 1 但输入的整数值大于 0,所以我的第二个代码是,但它不起作用,它也无限地继续下去。
这是我的示例代码:
while(cin>>x){
if(x<0){
break;
}
else{
v.push_back(x);
}
}
请建议我一个解决方案提前致谢:)
对你来说最重要的部分是清楚地描述你想要什么。程序必须有一些终止条件。
两个想法:
用户输入由 spaces 分隔的整数值,然后按下回车键
用户输入一个整数,按下回车键并继续。他一按两次回车,它就终止了。
怎么做:
简单的用cin带一个字符串,用space定界,然后转成整数。
将 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's 建议并在 Topcoder 和 Codechef 等网站以及其他竞争性编程网站上进行一些研究后,我认为我找到了无需使用字符串的解决方案。它采用所有输入值,直到输入换行符。非常感谢大家为这个问题付出的时间和知识。
密码是:
while(1){
cin>>x;
v.push_back(x);
char ch = getchar();
if(ch=='\n')
break;
}
我正在和我的朋友一起做一个学校项目,我们希望我们的程序从用户那里获取整数值并将其存储在一个向量中,只要用户输入一些值并在用户停止输入时退出输入循环数字。
这是我的第一个无限运行的示例代码:
while(cin>>x){
v.push_back(x);
}
有一个条件,数字必须大于 1 但输入的整数值大于 0,所以我的第二个代码是,但它不起作用,它也无限地继续下去。
这是我的示例代码:
while(cin>>x){
if(x<0){
break;
}
else{
v.push_back(x);
}
}
请建议我一个解决方案提前致谢:)
对你来说最重要的部分是清楚地描述你想要什么。程序必须有一些终止条件。
两个想法:
用户输入由 spaces 分隔的整数值,然后按下回车键
用户输入一个整数,按下回车键并继续。他一按两次回车,它就终止了。
怎么做:
简单的用cin带一个字符串,用space定界,然后转成整数。
将 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's 建议并在 Topcoder 和 Codechef 等网站以及其他竞争性编程网站上进行一些研究后,我认为我找到了无需使用字符串的解决方案。它采用所有输入值,直到输入换行符。非常感谢大家为这个问题付出的时间和知识。
密码是:
while(1){
cin>>x;
v.push_back(x);
char ch = getchar();
if(ch=='\n')
break;
}