如何在用户输入特殊字符时退出程序

时间:2011-04-30 23:10:59

标签: c++ cin

我正在做一个简单的程序,它包含一个while循环,它读入两个整数然后打印出来。我的问题是,当用户输入字符“|”时,如何退出程序?这是一个非常简单的小程序:

int main()
{
    int var1 = 0;
    int var2 = 0;

    while(cin>>var1>>var2)
    {
        cout << var1 << " " << var2 << endl;
    }

    return 0;
}

我知道你可以为getline定义一个完全符合我想做的参数,但我不知道如何在while循环中实现它。谢谢你的帮助。

3 个答案:

答案 0 :(得分:3)

一旦有人输入了某些内容,你的循环就会退出istream不能&lt;&lt;成一个整数。无论如何专门退出|,我会像这样使用peek函数:

int main()
{    
  int var1 = 0;    
  int var2 = 0;
  while( cin.good() )
  {
    char c;
    c = cin.peek();

    if( c == | )
      break;
    else
    {
      cin >> var1 >> var2;
      cout << var1 << " " << var2 << endl;
    }
  }

  return 0;
}

它避免使用c样式输入或复杂的行解析。

答案 1 :(得分:0)

您所要做的就是检查输入的值是否为|在if-block中然后使用break关键字来停止循环。

像这样的行:

#include <stdio.h>
int main() {
    char c;
    for(;;) {
        printf( "\nPress any key, Q to quit: " );

        // Convert to character value
        scanf("%c", &c);
        if (c == 'Q')
            break;
    }
 } // Loop exits only when 'Q' is pressed

答案 2 :(得分:0)

如上所述,如果用户输入|,您将退出循环。要么 其他任何不能被解释为int的事情 跳过领先的白色空间。)

如果你想要更精确的控制,你必须阅读 line(和解析行),或逐个字符(和构建 价值观。)