c++ - 在单字符数据类型中将空格作为输入?

标签 c++ char cin

当我正在编写 8 block 拼图问题时,我只想将空间当作一个空的地方。但是“[空格]”不被接受。

这是示例函数。

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";
        }
    }
}

另外,如何阻止用户输入两位数?

编辑:

cin>>to_check 更改为 to_check=getchar() 让我可以将 space 作为输入并解决我的查询。

最佳答案

cin 或任何 ios 流都可以忽略输入中的空格(空格、制表符、换行符),具体取决于 skipws 标志。

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

cin >> std::noskipws;

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

关于c++ - 在单字符数据类型中将空格作为输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59336668/

相关文章:

c++ - BGRA 到 YUV420 FFmpeg 输出不良

c++ - 使用 OpenMP 创建 FFTW 计划

java - 我可以修改 char 数组中的一个元素,但无法修改另一个元素

C++ cin >> double 不科学

C++ - 检查 cin 是否有错误

c++ - 没有分隔符的独立 CIN 输入

c++ - 一般的OpenCV线检测

python - 你如何将 (char)B00000001 (c++) 翻译成 python 等价物?

c++ - 如何返回空字符引用

c - 如何扫描值并忽略字符