如何让getline操作符工作?

时间:2013-11-27 15:13:32

标签: c++ getline

所以在之前的一个问题中,我被告知要添加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则没有任何反应。

该计划有什么问题?

2 个答案:

答案 0 :(得分:4)

运行getline()后,您输入的1已从cin读取并存储在line中。你必须从那里提取它。替换这个:

cin >> Choice;

用这个:

Choice = line[0];

这完全是基本的C ++;我建议你选择good book

答案 1 :(得分:1)

Angew是对的,但你在while循环中也没有任何利用这条线的东西。此外,如果用户只是输入数字,则不需要getline。您可以使用cin >> choice;