C++ 如果用户输入q,如何退出

C++ 如果用户输入q,如何退出,c++,if-statement,execute,C++,If Statement,Execute,当用户按Q键时,它不会退出程序。。怎么了?请帮忙 while (true) { //promt to user enter or quit cout<<" Enter five digit number please or Q to quit \n"; cin>> buf; n = atoi (buf.c_str()); cin.ignore(1000,10); if( n == 'q' || n == 'Q') break; a = n % 10; b =

当用户按Q键时,它不会退出程序。。怎么了?请帮忙

while (true)
{
//promt to user enter or quit
cout<<" Enter five digit number please or Q to quit \n";
cin>> buf; n = atoi (buf.c_str());
cin.ignore(1000,10);

if( n == 'q' || n == 'Q')
    break;

a = n % 10;
b = n / 10000;

if ( ! a == b )
    {
    cout<< "This is not a palindrome \n";
    continue;
    }
// checking the palindrome
n = n % 10;
n = n / 100;

if ( a == b )
    cout<<" This is palindrome\n";
else
    cout<<" This is not a palindrome\n";

}
while(true)
{
//提示用户输入或退出
cout buf;n=atoi(buf.c_str());
忽略(1000,10);
如果(n='q'| | n=='q')
打破
a=n%10;
b=n/10000;
如果(!a==b)
{

cout如果您向该程序输入
q
q
,它将不会在
atoi
中转换任何内容,
n
将是
0
,而不是
'q'
'q'
。但是,如果您在字符集中输入
'q'
'q'
的数值,程序将退出(
113
81

例如:

 Enter five digit number please or Q to quit 
12345
 This is not a palindrome
 Enter five digit number please or Q to quit 
12321
 This is palindrome
 Enter five digit number please or Q to quit 
q
 This is palindrome
 Enter five digit number please or Q to quit 
113 

我将把进一步的调试/修复留给您。注意-您的程序没有正确地检查回文。

如果您输入“q”字符,atoi函数无法将此输入解释为数字,因此返回零。 请参考此链接

最重要的是以下段落:

如果str中的第一个非空白字符序列不是有效的整数,或者由于str为空或仅包含空白字符而不存在此类序列,则不执行转换并返回零。


在这种情况下,str==buf

如前面的答案所述,q将通过atoi()转换为0。因此,基本上,为了让程序通过q或q退出,请在之后使用atoi()转换

if( n == 'q' || n == 'Q')
     break;
这样,当您检查程序是否应该退出时,n仍然是q或q,如果不应该退出,则使用atoi()将n转换为整数,并检查它是否是回文

希望我能帮你改变一下

if( n == 'q' || n == 'Q')


这将访问输入中的第一个字符,并将其与所需的字符“Q”或“Q”进行比较。

,因为你在两个相同的条件下使用OR。我的解决方案的工作方式与Ed Heal的解决方案几乎相同,所以如果这有效,很好,问题解决了!非常感谢你,我可以问你另一个问题吗?我试图创建一个空心正方形,我做了,但有些东西不起作用。@OruzAysn-我回答了这个问题至少comment@OruzAysn-你也可以投票给别人和/或接受他们的答案。这样做将确保你将来更有可能得到回应。
if( buf[0] == 'q' || buf[0] == 'Q')