C++을 사용하여 간단한 명령 구문 분석기를 만들고 있는데, istream >>을 사용하여 숫자 또는 문자를 입력하는지 확인하려고합니다.C++ : istringstream
입력 :
는a = 10
b = a
parser.cpp : varRight이 비어있는 경우
목표는string inputLine, varLeft, equal, varRight;
double varValue
// please see update below
while(getline(cin, inputLine)){
istringstream stringSplitter(inputLine);
stringSplitter >> varLeft >> equal;
if(!(stringSplitter >> varValue)){
stringSplitter >> varRight;
}
}
나중에 코드에서, 나는, 입력 라인이 double
문자라고 가정 그렇지 않으면 변수를 나타내는 문자열입니다. 숫자로 시작하는 혼합 입력과 관련된 논리적 오류가있을 수 있음을 이해하지만 모든 입력이 올바르게 형식화되어 있다고 가정합니다. 입력의 두 번째 줄에있는 a
이 왜 버려 집니까? 당신은 어떤 고치기를 제안합니까?
업데이트
문제는 while 루프 문으로하지 않습니다, 그것은 동안 코드 블록의 끝 부분에있는 경우 문이다.
실제 코드에서 루프는 실제로는 while 루프가 아닙니다. 내가 문자열 명령을 들고 벡터 개체를 사용하고 반복기를 사용하여 벡터를 통해가는 for 루프를 사용하여 iterating. 그러나 댓글 작성자를 기쁘게하기 위해 위에 수정했습니다.
완벽하게 작동했습니다. while 루프에 대해서는 위의 업데이트를 참조하십시오. 당신의 도움을 주셔서 대단히 감사합니다. – naxchange
하지만 그는'stringSplitter >> varRight;'가 성공했는지 어떻게 확인하나요? – 0x499602D2