这可能是一个简单的问题,只是为了我自己的信息。
我要求用户输入2个。
当用户按下回车键或用户输入的输入超过3时,C ++控制台如何知道用户缺少1个输入?
感谢您的回答。
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
using namespace std;
int main()
{
char hord;
int x;
char userInput[256] ;
int value;
cout<<"Please enter a ./Even mode number: ";
cin >> hord >> userInput;
if(hord == 'd')
{
value = atoi(userInput);
cout <<"Selected Base 10" << endl;
if (value % 2) /*or *///(x & 1)
printf("%d is an odd number d\n", value);
else
{
printf("%d is an even number d\n", value);
}
}
else if(hord =='h')
{
sscanf_s(userInput, "%x", &x);
if (x % 2)
{/*or *///(x & 1)
printf("%d is an odd number h \n", x);
}
else
{
printf("%d is an even number h\n", x);
}
}
else
{
printf("Incorrect mode given ");
}
cin.get();
_getch();
return 0;
}
答案 0 :(得分:2)
不是让用户在一行上输入两个值,而是提示用户输入每个输入。
std::cout << "Enter the first value and press ENTER: ";
std::cin >> value1;
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout << "Enter second value and press ENTER: ";
std::cin >> value2;
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
这将确保用户知道他必须输入两个值,并且您知道您将拥有两个值。对ignore
的调用是跳过用户在值之后写入的可能垃圾数据。
您还应验证用户是否为您提供了有效值,如果没有,请再次询问用户值。
答案 1 :(得分:1)
要记住的是,从控制台程序的角度来看,没有“用户”输入,只是输入。程序不应该关注何时有更多的输入并且在没有足够的时候等待。输入是行缓冲的,因此用户必须按Enter才能传递输入,但“cin&lt;&lt;”根据空格分隔输入 如果这对你不起作用(因为应用程序真的是面向用户的),那么你应该自己使用getline()和separate输入。