所以在之前的一个问题中,我被告知要添加getline来使用它,这样用户只能使用一个字符作为cin运算符。我的节目在这里:
#include <iostream>
#include <stdio.h>
#include <cstdio>
#include <cstdlib>
char Choice;
char my_name;
using namespace std;
int main()
{
printf("You come out of darkness.\n");
printf("Confused and tired, you walk to an abandoned house.\n");
printf("You walk to the door.\n");
printf("What do you do?\n");
printf("1. Walk Away.\n");
printf("2. Jump.\n");
printf("3. Open Door.\n");
printf(" \n");
string line;
getline(cin, line);
while(line.size() != 1)
{
printf(" \n");
cout<<"Please enter one single number!\n";
printf(" \n");
getline(cin,line);
}
cin >> Choice;
printf(" \n");
if(Choice == '1')
{
printf("The House seems too important to ignore.\n");
printf("What do you do?\n");
printf("1. Jump.\n");
printf("2. Open Door.\n");
printf(" \n");
cin >> Choice;
printf(" \n");
}
}
但是当我运行该程序时,它会通过我输入12并且会说“请输入一个数字!”,但是如果我只放1则没有任何反应。
该计划有什么问题?
答案 0 :(得分:4)
运行getline()
后,您输入的1
已从cin
读取并存储在line
中。你必须从那里提取它。替换这个:
cin >> Choice;
用这个:
Choice = line[0];
这完全是基本的C ++;我建议你选择good book。
答案 1 :(得分:1)
Angew是对的,但你在while循环中也没有任何利用这条线的东西。此外,如果用户只是输入数字,则不需要getline。您可以使用cin >> choice;