将 space 作为单字符数据类型的输入?
Take a space as an input in single char data type?
我只是想把 space 作为一个空白的地方,因为我正在编写一个 8 块拼图问题。然而‘[space]’没有被接受。
这是示例函数。
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
无法将单个 space 识别为 "full" 输入,因为它需要通过回车来完成。您需要将其替换为
to_check = getchar();
因此,如果您键入 space,它将保存在您的 to_check
变量中
cin
或任何 ios
流可以忽略输入中的空格(空格、制表符、换行符),具体取决于 skipws
标志。
您可以使用 std::noskipws:
禁用忽略空格
cin >> std::noskipws;
请注意,您将必须处理输入代码中的换行符 '\n'
和空格。
我只是想把 space 作为一个空白的地方,因为我正在编写一个 8 块拼图问题。然而‘[space]’没有被接受。
这是示例函数。
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
无法将单个 space 识别为 "full" 输入,因为它需要通过回车来完成。您需要将其替换为
to_check = getchar();
因此,如果您键入 space,它将保存在您的 to_check
变量中
cin
或任何 ios
流可以忽略输入中的空格(空格、制表符、换行符),具体取决于 skipws
标志。
您可以使用 std::noskipws:
禁用忽略空格cin >> std::noskipws;
请注意,您将必须处理输入代码中的换行符 '\n'
和空格。