Q)에 답을 써주셨네요.
10828번 - 스택
void solve(stack* st, string command);
int main() {
int N;
string command;
stack st;
cin >> N;
getchar(); // <<<<<<<<< 개행은 getchar로 빼니 되네요
for (int i = 0; i <= N; i++) {
getline(cin, command);
if (i != 0)
solve(&st, command);
}
return 0;
}
그리고 여담으로 getline가 아닌 string cmd; int val; 이후 cin >> cmd >> val; 로 받으면 더 쉽지않을까요..?
댓글을 작성하려면 로그인해야 합니다.
lcs5382 5년 전
원래는 stack.h / stack.cpp / main.cpp로 모듈화하여 가독성이 좋았으나
제출을 하기 위해서 모두 main.cpp에 모으다보니 코드길이가 길어진 점 이해바랍니다 ㅠㅠ
제가 궁금한점은 다음과 같습니다.
main함수내 31~35번 라인을 한번 봐주세요~
원래는 for문을 N번만 실행하려했으나
31번 라인에서 cin>>N을 실행한 후 33번 라인을 무시하더라고요...(여기가 궁금한점!!)
그런데 두번째 차례의 for문에서는 getline을 인식했습니다. 그래서
34번 라인의 if( i != 0 )구문을 추가하여 첫번째 차례의 for문만 스택명령어를 인식하지 못하게 했고
그다음부터는 인식하도록 구현하였습니다.
질문!!!
Q) 왜 cin>>N을 실행한후 곧바로 getline함수를 실행하면 무시를 하게되는 걸까요?
저는 처음에 개행문자(\n)가 들어간다고 생각해서 cin.clear()함수를 추가했지만
여전히 첫번째 차례의 for문에서 getline함수를 무시하더라고요...
고수님들 도와주세요~~