2012-05-16 3 views
0

일반적으로 다음과 같이 제어 루프를 작성합니다. "입력 완료"가 입력 될 때까지 입력 된 루프가 벡터 nVec에 ints를 씁니다.아무 것도 입력하지 않을 때 루프 종료

이 작동하지만 사용자가 아무 것도 입력하지 않은 상태에서 루프를 끝내려면 어떻게해야합니까?

+0

'='은 대입 연산자이고, '=='는 항등 연산자입니다. 그 (것)들을 혼동하지 않기 위하여 잘하십시오. –

답변

1

토큰 별 추출에 "아무 것도 입력 할 수 없습니다." 루프를 멈추는 유일한 방법은 사용자가 파일 끝을 보내는 것입니다 (Linux에서는 Ctrl-D). 나는 개인적으로이 올바른 행동이라고 말할 것입니다,하지만 당신은 빈 입력에 종료하려는 경우, 당신은 라인을 읽을 필요가 :

Sales_item total; 

for (std::string line; std::getline(std::cin, line);) 
{ 
    if (line.empty()) { exit_program(); /* or "break" */ } 

    std::istringstream iss(line); 
    for (Sales_item book; iss >> book;) 
    { 
      total += book; 
      std::cout << "The current total is " << total << std::endl; 
    } 
} 

이 방법을 사용하면 아마도 여러 책으로 각 행을 토큰 화. 한 줄에 하나의 책만 원할 경우 내부 루프를 찢어 내고 std::istringstream(line) >> book;라고 말하면됩니다.

+0

감사 ...이 오류가 발생하는 이유는 무엇입니까? 10 오류 : 'exit_program'이이 범위에서 선언되지 않았습니다. 12 오류 : 'std :: istringstream iss'변수에 초기화 프로그램이 있지만 불완전한 형식이 있습니다. exit_program()이 헤더 파일에서 호출되어야한다고 추측합니다. 하지만 불완전한 타입에 대한 단서가 없습니다 ... –

+0

문자열 스트림에'#include '이 필요합니다. 'exit_program'은 방금 작성한 이름입니다. 루프를 벗어나기 위해 당신이 좋아하는 것을 넣는 것이 좋습니다. 'return 0;'또는'break;'와 같은 것입니다. –

+0

감사! 이게 내가 얼마나 새로운지 보여줍니다 ... 도움을 청합니다! –

관련 문제