只要用户进入,如何从用户获取整数?

时间:2017-07-29 16:47:20

标签: c++ loops while-loop integer cin

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

这是我的第一个示例代码无限下载:

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

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

这是我的示例代码:

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

请提前感谢我提出解决方案:)

3 个答案:

答案 0 :(得分:1)

最重要的部分是清楚地描述你想要的东西。该程序必须具备终止的条件。

两个想法:

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

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

  3. 怎么做:

    1. 简单地使用带字符串的cin,按空格分隔,然后转换为整数。

    2. 将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;
        }