2010-08-18 2 views
1

약간의 명령 줄 구문 분석기를 구현하고 있습니다. 두 개의 매개 변수가 필요한 명령이 있다고 가정 해 보겠습니다. 사용자가 한 줄에 여러 줄뿐만 아니라 모든 세 줄 (명령과 두 매개 변수)을 입력하게하고 싶습니다. 현재 내가 이런 식으로 뭔가를 보내고 있습니다 : std :: cin 연산자 >>가 전체 줄을 읽었는지 확인하십시오.

std::string command; 
std::cin >> command; 
std::cout << command << " entered\n"; 
std::string param1; 
std::cin >> param1; 
std::cout << param1 << " entered\n"; 
std::string param2; 
std::cin >> param2; 
std::cout << param2 << " entered\n"; 

가 지금은 사용자가 어떤 매개 변수없이 명령, 그의 출력 방향을 입력 단지 것을 감지 할 수 있어야합니다. 명령을받은 후에 줄에 다른 내용이 포함되어 있는지 테스트해야하며 그렇지 않은 경우 사용자에게 더 많은 내용을 입력하도록 요청해야한다고 생각합니다. eof()fail()으로 시도했지만 작동하지 않습니다. 어떻게 그걸 확인할 수 있니?

감사합니다.

답변

6

줄을 읽으려면 std::getline을 사용해야합니다. 일단 전체 라인을 사용하면 단어로 분리 할 수 ​​있지만 많은 부분이 있습니다.

+0

+1 나를 이길 ... –

+0

글쎄,하지만 나는 그 문자열에 얽매이지 않고 토큰을 계산할 필요가 없다고 생각한다. – phunehehe

+1

@phunehehe : 밖으로 명령 한대로 _line_ 파서. 이를 달성하기위한 유일한 방법은 'getline'과 같이 한 줄씩 읽는 것입니다. 현재'cin'에서와 같은 방법으로''''과''istringstream'을 사용하여 단어 해석을 할 수 있습니다. –

관련 문제