[C++ Primer Plus] Chapter 6. 분기 구문과 논리 연산자
Table of Contents
C++ 기초 플러스 책을 읽고 공부한 노트입니다.
연산자 우선순위 #
연산자 | 결합규칙 |
---|---|
:: |
|
(괄호묶기, 함수호출, 값 생성) [] . -> ++ -- const_cast dynamic_cast reinterpret_cast static_cast typeid |
→ |
! ~ + - ++ -- & * (형변환) sizeof alignof new delete noexcept |
← |
.* ->* |
→ |
* / % |
→ |
+ - |
→ |
<< >> |
→ |
< <= >= > |
→ |
== != |
→ |
& |
→ |
^ |
→ |
| |
→ |
&& |
→ |
|| |
→ |
:? |
← |
= *= /= %= += -= &= ^= != <<= >>= |
← |
throw |
→ |
, |
→ |
cctype 라이브러리 #
함수명 | 쓰임새 |
---|---|
isalpha |
영문자인가? |
isdigit |
숫자인가? |
tolower |
소문자로 |
toupper |
대문자로 |
switch 구문 #
case
레이블은 그 값이int
형이어야 한다. (enum
가능)- 많은 구현체들이
switch
문을 jump table로 구현하기 때문에if else
보다 실행 속도면에서 효율적이다. - 보통
if
문이 3개일때까지는if else
문이 빠르고 그 이상은switch
문이 빠르다. 하지만 그 속도 차이가 미미해서 가독성을 더 고려하는 것이 좋겠다.
루프로 읽기 #
int n;
cin >> n;
-
여기서 수 대신 문자를 입력하면 벌어지는 일
- (1)
n
의 값은 변하지 않는다. - (2) 입력 큐에 잘못된 입력이 그대로 유지된다.
- (3)
cin
객체에 에러 플래그가 설정된다. - (4)
cin
메서드 호출이false
(bool
형으로 변환된다면)를 리턴한다.
- (1)
-
따라서 다시 입력을 재개하려면
- (1)
cin
을 초기화한다. - (2) 불량입력을 제거한다.
- (1)
while (!(cin >> golf[i])) // 제대로 입력하면 종료 하고 아니면 다시 입력 재개
{
cin.clear();
while( cin.get() != '\n' ) continue;
}
텍스트 파일 쓰고 읽기 #
- 쓰기
#include <fstream>
ofstream outFile;
outFile.open("text.txt");
outFile << "안녕";
outFile.close();
- 읽기
#include <fstream>
ifstream inFile;
inFile.open("text.txt");
if (!inFile.isopen)
exit(EXIT_FAILURE);
if (inFile.good())
inFile >> str;
inFile.close();
open()
을 하면 새 파일을 만든다. 기존 파일이 존재하면 내용이 모두 지운다.
inFile.eof()
는 파일의 끝에 도달하면true
inFile.fail()
은 데이터형 불일치나 파일의 끝에 도달하면true
inFile.bad()
는 파일이 깨지거나 하드웨어 실패하면true
inFile.good()
은 잘못된 것이 하나도 없으면true