2011-04-30 101 views
1

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

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

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

    return 0; 
} 

我知道,你可以定义一个参数,它正是我想要做的函数getline,但我不知道如何在一个while循环实现这一点。谢谢您的帮助。

+0

你问在var1或var2(读取后)如何终止循环包含管道字符?我怀疑不是 - 也许用更详细的例子输入来描述你想要的。 – 2011-04-30 23:13:22

回答

3

只要有人输入某个istream不能将< <变成一个整数,您的循环已经退出。反正在具体退出|,我会使用防窥视功能,像这样:

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语言风格的输入或复杂的行解析。

+0

非常感谢您的回答!但是,当我在我的编译器中输入这个错误时:错误C3867:'std :: ios_base :: good':函数调用缺少参数列表;使用'&std :: ios_base :: good'来创建一个指向成员和致命错误的指针C1903:无法从以前的错误中恢复 – Raphael 2011-04-30 23:38:19

+0

你有没有试过编译过? – 2011-04-30 23:43:31

+0

@bobiscool cin.good是一个函数,应该是cin.good()。对不起,我把它写在了我的头顶。我现在无法访问编译器:),现在我将更改我的原始文章 – 2011-04-30 23:44:50

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 
0

书面,你会如果用户输入|退出循环。或 其他任何不能被解释为int(跳过空白的 之后)。

如果您想要更精确的控制,您必须通过 行(并解析行)或逐个字符(并将值修改为 )读取行。