46강 string 버퍼 질문입니다
79
작성한 질문수 15

jack jack 주황색 앞 부분이 첫번째 cin 에 들어가고 뒤에 jack과 엔터가 버퍼에 남는 다고 알려주셨는데 그럼 your age 에 jack이 하나만 들어가야 맞는게 아닌가요? 왜 jack이 두개나 들어가나요? 이해가 안돼요
답변 2
0
안녕하세요? 질문&답변 도우미 durams입니다.
정말로 age 변수에 jack이 두 개가 들어간 것이 맞을까요? 디버거를 통해 확인해보셨으면 좋겠습니다. 얼핏 봤을 때에는 age에 "jack jack"이 들어간 것처럼 보이긴 합니다만, 다시 아래 사항에 유의하여 생각해보세요.
사용자가 입력한 문자열과 프로그램이 출력하는 문자열의 구분
줄바꿈이 어디에서 일어나는지 확인
고민해보시고 그래도 해결이 안 된다면, 다시 댓글을 달아주세요.
0
name에 대해 입력을 받을 때 공백을 포함한 문자열을 입력하게 되면 결과 name과 age를 바로 출력하는 동작을 말씀하시는 것 맞나요?
이는 buffered i/o라는 입출력 방식 때문입니다. 간단하게 말씀드리자면, 입력을 받고자 할 때 버퍼에 내용이 이미 들어와있을 때에는 해당 내용을 사용하고, 버퍼가 비어 있다면 새로 입력을 받게 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. 윤주헌님.
C++에서 cin을 사용해 문자열을 입력받을 때, 빈칸(공백)은 새로운 입력의 시작을 의미하기 때문에 첫 번째 cin 연산에서는 공백 앞의 문자열만을 받아들입니다. 즉, "jack jack"이라는 입력은 처음에 "jack"만 name에 저장하고, "jack"과 엔터(\n)는 입력 버퍼에 남습니다.
이후 두 번째 cin 연산이 실행될 때, 버퍼에 남아 있던 "jack"이 입력받아지고, 버퍼는 엔터(\n)만 남게 됩니다. 이는 두 번의 cin 연산이 빠르게 연속적으로 사용되기 때문에 발생하는 일반적인 현상입니다.
이와 관련된 문제를 해결하려면, getline(cin, string) 함수를 사용하는 것이 좋습니다. getline은 줄바꿈 문자까지 포함하여 한 줄 전체를 입력받기 때문에 공백도 포함된 전체 문자열을 변수에 저장하게 됩니다. 이렇게 하면 모든 공백도 무시하지 않고 포함되므로, 공백으로 분리되는 문제를 걱정할 필요가 없습니다.
이미지를 통해 자세한 코드를 분석하지 않았지만, cin.ignore()나 getline과 같은 추가 함수들을 통해 이 문제를 해결할 수 있습니다.
관련 질문 링크:
- 문자열 중간에 빈칸이 있을 때 age로 넘어가는 문제
- cin에 빈칸이 있는 문자열 넣을 때 문제
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
교재 있나요?
1
127
2
11:11 부근에 Something::temp와 Something::getValue의 앞에 &를 붙이는 이유가 뭔가요? (함수 이름은 포인터(주소)가 아닌가요?)
1
85
3
using namespace std; 선언 후에 std::를 하는 이유가 궁금합니다
1
98
2
cstr직접구현
0
111
3
BubbleSort
1
75
2
숙제 마지막 부분
1
76
2
강의와 똑같이 진행했는데 링킹 에러가 발생합니다.
1
90
2
수업할때 레퍼런스로 사용하는 도서는 어떤 도서인가요??
1
158
2
공변반환형 관련 문의 드립니다.
1
88
2
170강 유니크 포인터에대해 질문있습니다
1
78
1
섹션 5 퀴즈의 답이 이상합니다
1
82
2
이중포인터와 배열이 이해가 안됩니다.
1
151
2
5분 17~5분 34초 객체 잘림 질문
1
74
1
Resource.h 코드 알려주세요
1
70
1
char name[] 배열의 길이와 관련해 일부 궁금점이 생겨서 질문합니다
1
93
2
화면좌측 숫자 보이기
1
111
1
화면 좌측 숫자 보이기
0
65
1
처음 c++ 수강하려는데요. 비주얼스튜디오 2022 다운로드해서 설치하면 되는건가요??
1
134
3
프로그래머스 수열과 구간 쿼리 2 문제 질문입니다.
1
122
2
[] 범위 검사시 assert 사용 관련 질문
1
84
2
Lecture 클래스 멤버변수 명명 관련
0
85
2
프로그래머스의 대소문자 바꿔서 출력하기 문제를 푸는데요
0
67
1
noexcept과 throw()
1
78
2
explicit instantiation에 대해
1
60
2





