将空格作为单个char数据类型的输入?

问题描述 投票:1回答:2

我只想将空间当作一个空地方,因为我正在编码一个8片拼图问题。但是,不接受“ [空格]”。

这里是示例功能。

void puzzle_8::initial_string_setup()
{
    int i=0;
    string initial="abcdefghi";
    string allowed=" 12345678";
    char to_check;
    bool check=false;
    while(i!=9)
    {
        cout<<"\n\n\t\t"<<initial[0]<<"  |  "<<initial[1]<<"  |  "<<initial[2]<<endl<<"\t\t---+-----+---"<<endl<<"\t\t"<<initial[3]<<"  |  "<<initial[4]<<"  |  "<<initial[5]<<endl<<"\t\t---+-----+---"<<endl<<"\t\t"<<initial[6]<<"  |  "<<initial[7]<<"  |  "<<initial[8]<<endl;
        cout<<"Enter input for place "<<initial[i]<<": ";
        cin>>to_check;
        check=false;
        for(int j=0;j<9;j++)
        {
            if (to_check==allowed[j])
            {
                check=true;
                break;
            }
        }
        if(check==true)
        {
            initial[i]=to_check;
            i++;
        }
        else
        {
            cout<<"\n\nInvalid entry\n\n";
        }
    }
}

而且,如何阻止用户输入两位数字?

c++ char cin
2个回答
1
投票

cin或任何ios流可以根据skipws标志忽略输入上的空格(空格,制表符,换行符)。

您可以使用std::noskipws禁用忽略空格:

cin >> std::noskipws;

注意,然后您将必须在输入的代码中处理换行符'\n'和空格。


0
投票

您的代码中cin不会将单个空格识别为“完整”输入,因为它需要用回车键来结束。您需要将其替换为

to_check = getchar();

因此,如果您输入空格,它将被保存在to_check变量中

© www.soinside.com 2019 - 2024. All rights reserved.