我只想将空间当作一个空地方,因为我正在编码一个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";
}
}
}
而且,如何阻止用户输入两位数字?
cin
或任何ios
流可以根据skipws
标志忽略输入上的空格(空格,制表符,换行符)。
您可以使用std::noskipws禁用忽略空格:
cin >> std::noskipws;
注意,然后您将必须在输入的代码中处理换行符'\n'
和空格。
您的代码中cin
不会将单个空格识别为“完整”输入,因为它需要用回车键来结束。您需要将其替换为
to_check = getchar();
因此,如果您输入空格,它将被保存在to_check
变量中