1

我目前正在做一个简单的程序,该程序由一个 while 循环组成,该循环读取两个整数,然后将它们打印出来。我的问题是,当用户输入字符“|”时如何退出程序?这是这个超级简单的小程序:

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

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

    return 0;
}

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

4

3 回答 3

4

一旦有人输入 istream 不能 << 进入整数的内容,您的循环就已经退出。无论如何要专门在 | 处退出,我会像这样使用 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 风格的输入或复杂的行解析。

于 2011-04-30T23:26:35.837 回答
0

您所要做的就是检查输入的值是否为 | 在 if 块中,然后使用 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
于 2011-04-30T23:18:33.097 回答
0

如前所述,如果用户输入|. 或任何其他不能解释为int(在跳过前导空格之后)的内容。

如果您想要更精确的控制,您必须逐行读取(并解析行),或逐个字符(并建立值)。

于 2011-04-30T23:19:00.857 回答