2017-02-09 6 views
-5
string a, b; 
cin >> a >> b; 
if (a == "yes") break; 
... 

왜 작동하지 않을까요? 사용자가 "예 (please please)"또는 "예 (yes please)"라고 입력하면 프로그램은 어떤 루프에서든지 빠져 나가야 만합니다. 콘솔은 라인 피드를 인쇄하고 기다립니다. 여기서 내가 뭘 잘못하고 있니?C++ 두 줄의 첫 번째 입력을 같은 줄에 확인하십시오.

+0

힌트 "같은 줄에"합니다 cpp/regex) 여기에 있습니다. 당신은 결코 알지 못한다. – tadman

+2

"yes"만 입력하면 프로그램이 대기합니다. "예 부탁"을 입력하면 기다릴 필요가 없습니다. –

+0

디버깅 도움말 ("이 코드가 작동하지 않는 이유는 무엇입니까?")에는 원하는 동작, 특정 문제 또는 오류 및 질문 자체에서이를 재현하는 데 필요한 가장 짧은 코드가 포함되어야합니다. 분명한 문제 성명이없는 질문은 다른 독자에게 유용하지 않습니다. 참조 : [최소한의 완전하고 검증 가능한 예제를 만드는 방법] (http://stackoverflow.com/help/mcve). –

답변

2

두 번째 문자열 b의 읽기는 선택하지, 그래서 당신이 "yes"이나 다른 단어를 입력하면, 프로그램 블록은 두 번째를 입력 할 수 있습니다.

다음 작업의 흐름이 진행한다 :

  • "yes"
  • 내지 제 단어 비교 b에 제 단어 a

  • 기다림에 첫 번째 단어

    • 기다리 b의 값이 끝나기 전에는 비교가 시작되지 않습니다.

      당신이 간단한 "yes"에 루프를 종료하려면

      이 필요한 경우 휴식, "yes"과 비교, a을 읽고, 그런 다음에야 b 읽기 : 이제
      cin >> a; 
      if (a == "yes") break; 
      cin >> b; 
      

      루프 당신이 모두를 종료하지 않는 경우를 ab이고 a"yes"과 같지 않습니다. 현재

  • +0

    큰 설명 주셔서 감사합니다. – Norse

    0

    :

    string a, b; 
    cin >> a >> b; 
    if (a == "yes") break; 
    ... 
    

    다음으로는 될 일을 올바른 방법. b는 동시에 a와 b를 동시에 사용할 때 아무런 가치가 없습니다. 당신은 벌레의 깡통을 열고 (A [정규 표현식]을 사용할 수 http://en.cppreference.com/w/ :

    string a, b; 
    cin >> a; 
    if (a == "yes") 
    { 
    break; 
    } 
    cin >> b; 
    

    B는 여전히