(C++ 초보) string 입력받기 오류
글쓴이: kldpmania / 작성시간: 화, 2014/11/25 - 12:15오전
과제 하는 중에 너무 막혀서 답답해서 질문 올립니다.
함수들 차례대로 실행하면, 쭉 문제없다가,
questionContent 함수에서 자꾸 오류가 나네요.
뭐가 문제일까요.
#include <iostream> #include <stdio.h> #include <string> #include <cstring> using namespace std; class SurveyClass { //설문 클래스 string question; //질문 내용 int selectqty; // 보기 개수 string selectcontent[10]; //보기 내용 int answer; //설문자 답변 내용 public: void questionRegister() { //질문 등록 메소드 cout << "1. 질문을 입력해주세요 (40자 이내) : "; std::getline(cin,question); cout << endl; } void questionSelection() { //보기 개수 지정 메소드 cout << "2. 보기 개수를 지정해주세요 : "; cin >> selectqty; cout << endl; } void questionContent() { //보기 내용 등록 메소드 cout << "3. 보기 내용을 등록해주세요" << endl; for (int i=0; i < selectqty; i++) { cout << i+1 << "번째 보기 : "; std::getline(cin,selectcontent[i]); cout << endl; } }
Forums:
실행 결과랑 에러 메시지도 같이 올려주세요. 언뜻
실행 결과랑 에러 메시지도 같이 올려주세요.
언뜻 봐서는 questionSelection() 함수에서 input 받을 때, 10 이상을 지정해서 오버 플로우가 나는 것 같습니다.
---------------------------------
제일 왼쪽이 저입니다 :)
아, 오류 내용을 제가 안 적었네요ㅠㅠ 빌드시 오류도
아, 오류 내용을 제가 안 적었네요ㅠㅠ
빌드시 오류도 없고 실행은 되는데, 예를 들어 보기 개수를 2로 지정하면,
"1번 보기 :
2번 보기 : " ... 이렇게 1번 보기 입력을 지나가 버리고, 바로 2번부터 입력을 받네요...
C++은 아주 예전에 해봐서 잘 기억이 안나긴
C++은 아주 예전에 해봐서 잘 기억이 안나긴 하는데
questionContent 함수 실행후 for문 들어가기 전에 최초 인풋 버퍼 플러쉬를 한번 해보시는게 어떨까요
c++에서 버퍼 플러쉬 방법은 잘 모르겠네요.. fflush(stdin) 이 되는지..
위에서 뭔가 cin으로 입력 받은후 \n 개행문자가 아직 stdin 버퍼에 남아있을지도 모릅니다
fflush 넣으니, 잘 되네요! 감사합니다!!
fflush 넣으니, 잘 되네요!
감사합니다!!
댓글 달기