2011-04-30 5 views
1

저는 두 개의 int를 읽고 나서 그들을 인쇄하는 while 루프로 구성된 간단한 프로그램을하고 있습니다. 내 질문은, 어떻게하면 사용자가 caracter "|"를 입력하면 프로그램을 종료 할 수 있습니까? 다음은이 작은 슈퍼 간단한 프로그램입니다 :사용자가 특수 문자를 입력 할 때 프로그램을 종료하는 방법

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

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

    return 0; 
} 

난 당신이 내가 원하는 정확히 무엇의 getline에 대한 인수를 정의 할 수 있다는 것을 알고,하지만 난 잠시 루프에서이를 구현하는 방법을 모르겠어요. 도와 주셔서 감사합니다.

+0

var1 또는 var2 (읽은 후)에 파이프 문자가 포함되어있을 때 루프를 종료하는 방법을 묻는 중입니까? 나는 의심 스럽다 - 아마도 당신이 원하는 것을 묘사 할 수있다. –

답변

3

누군가가 뭔가를 입력하자마자 루프가 이미 종료됩니다. < <을 정수로 사용할 수 없습니다. 어쨌든에서 특별히 종료 |, 정말처럼 슬쩍 기능을 사용 : 그것은 C 스타일의 입력 또는 복잡한 라인의 구문 분석을 사용하는 것을 피한다

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; 
} 

.

+0

답변 해 주셔서 감사합니다. 그러나 내가이 컴파일러에 오류를 입력하면 오류 C3867 : 'std :: ios_base :: good': 함수 호출 누락 된 인수 목록; '& std :: ios_base :: good'을 사용하여 멤버에 대한 포인터를 만들고 치명적인 오류 C1903 : 이전 오류에서 복구 할 수 없습니다 – Raphael

+0

이것을 컴파일 해 보셨습니까? –

+0

@bobiscool cin.good는 함수이며 cin.good()입니다. 미안해, 내 머리 꼭대기에 썼다. 나는이 시점에서 컴파일러에 접근 할 수 없다. :) 지금 원래의 ​​글을 바꿀 것이다. –

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 (앞 공백을 건너 뛰는 이후)으로 해석 할 수없는 모든 것.

더 정밀한 제어를 원할 경우 줄을 읽고 (줄을 구문 분석하거나) 문자 단위로 문자를 읽고 (값을 위로 작성해야합니다).

관련 문제