본문 바로가기
언리얼_엔진_게임개발_공부/C++

[C++] cin 에 대하여... >>, getline, cin.getline / cin.ignore 관련 이슈 / cin 플래그 값

by jaboy 2024. 12. 27.

(잡담)

오늘 하루는 프로그래머스 코딩 연습문제 풀다가 다 갔다..... ㅠ

"혼자 놀기의 달인" - 나를 힘들게 했던 문제... https://school.programmers.co.kr/learn/courses/30/lessons/131130

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

머릿속에서 코드를 단계별로 동작하는 게 오래 걸린다... 레벨 1인줄 알았는데 레벨 2였다;;

결국 낮에 시작해서 저녁에 해결했는데, 마지막 두시간 정도 뻘짓하다가 내가 놓쳤던 것은...

루프에서 최댓값 2개를 업데이트하고 있었는데 최댓값 갱신할 때 두번째 최댓값 업데이트를 안했던 것 ㅠ...... 멍청아~~~

더 빠릿빠릿하게 하고, 더 꼼꼼히 살펴보자...

 

+ single digit integer to char

ASCII 값 '0' 을 더해 한자리 정수를 char 로 만들 수 있다.

그냥 (char) digit 뭐 이런 식으로하면 \u000 이런게 붙는다.

 

iostream 의 속도를 빠르게 할 수 있는 방법들 (주의 필요)

ios::sync_with_stdio(false); - C의 stdio 와 동기화 해제 --> printf scanf 등 C의 입출력 함수를 호출할 때 주의해야 한다.

 

ios::sync_with_stdio , cin.tie , cout.tie 사용법과 설명, 속도 비교

※요약 : 아래 구문들을 사용할 때, C와 C++의 입출력 혼용하지 않아야하며, thread 사용에 주의해야한다. 1.ios_base::sync_with_stido(bool sync); [설명] C++ 표준 스트림들이 C표준 스트림들과 각각의 입출력

hegosumluxmundij.tistory.com

 

 

cin.tie(NULL) 또는 cout.tie(NULL)

cin 과 cout 가 서로 tie 상태에서는 다른 stream에서 입출력 명령 전 자신 stream을 flush 한다.

cout line 다음 cin line 이 와도 앞의 cout 이 flush 되지 않는다는데...

(그런데 비주얼 스튜디오에서 했을 때 untie 상태에서도 정상 출력됨)

 

cin 의 flag bits 플래그 값들 / clear() 와 ignore()

fail() 입력 실패 (e.g. 정수 입력하려는데 문자 입력)

eof() short for end of file (읽어들일 입력 없음)

bad() 스트림이 작동 불가 상태

good() 위의 세 에러가 발생하지 않음

 

clear() 플래그 값 초기화

ignore(numeric_limits<streamsize>::max(), '\n') : parameter 이름처럼 스트림이 처리할 수 있는 최대 사이즈만큼 flush 한다.

두번째 인자 '\n'을 최대 사이즈 전에 맞닥뜨리면 해당 위치까지 flush 한다. (개행 문자 포함) 

 

----

과제하며 인풋 유효성 체크하는데 위와 같은 내용에 대해 자세히 몰라 시간을 많이 썼다....