只要用户输入,如何从用户那里获取整数?
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);
}
}
请提前向我建议解决方案:)
对你来说,最重要的部分是清楚地描述你想要什么。程序必须具有终止的某种条件。
两个想法:
-
用户输入以空格分隔的整数值,然后按回车键
-
用户输入一个整数,按回车键并继续。只要他按两次回车键,它就会终止。
怎么做:
-
简单地将 cin 与字符串一起使用,用空格分隔,然后转换为整数。
-
将 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;
}
相关文章:
- C++需要帮助从用户那里获得一个整数,并确保它在另外两个整数之间
- 如何从用户那里获取输入并将其存储在向量中?
- 从用户那里获取数组大小的值
- 代码在执行之前终止,并且没有从用户那里获取输入
- 我无法在某个点(从用户那里)获得输入,即使没有错误弹出编译
- 从用户那里获得无限量的输入,而不是打印最大的3个,而不使用数组
- 有没有更简单的方法可以从用户那里获取三个数字并按升序打印它们?
- 只要用户输入,如何从用户那里获取整数?
- 如何让这个C++代码从用户那里读取五个整数而不是一个整数?
- 如何从用户那里接收多个字符串并将这些字符串添加到 c++ 中的数组中?
- 如何从用户那里获取单个字符,直到他输入"."或输入
- C++ 从用户那里获取未知数据类型输入
- 如何从用户那里获取方程的输入并在 c++ 中对其进行评估
- 从用户那里获取"yyyy/mm/dd, hh:mm"形式的日期输入并验证C++中的日期?
- 我需要编写一个代码,从用户那里获取输入(句子)并停止在@处
- 我在使用 cin.getline() 从用户那里获取 3 个字符串并使用指针数组来存储它们时遇到问题
- 如何制作 n*n 矩阵的输出文件,通过从用户那里获取 n,并成对生成的数字
- 如何从用户那里获取具有预定义字符串长度的字符串输入C++
- 我正在编写一个代码,该代码从用户那里为公司中的五个项目输入数量
- 从用户那里获取输入,直到他输入一个数字