Page 17 -
P. 17
정규 표현식은 텍스트 패턴을 표현하는 언어이며, 주어진 텍스트에 원하는 패턴이 있는지 찾는 용
도로 사용한다. 또한, 패턴과 일치하는 부분을 다른 텍스트로 대체하는 용도로도 사용할 수 있다.
1
1.2.5 입력과 출력 표준 라이브러리
I/O 스트림 라이브러리(I/O stream library)는 C++ 초기부터 제공된 라이브러리로, 외부 세계와 소
통하는 기능을 제공한다.
여기서 소통의 의미를 구체적으로 설명하면, 추출 연산자(extraction operator)인 >>는 입력 스트림
에서 서식이 있거나 없는 데이터를 읽고, 추가 연산자(insertion operator)인 <<는 출력 스트림에 데
이터를 쓴다. 데이터의 서식은 조작자(매니퓰레이터(manipulator))로 지정한다.
스트림 클래스는 계층 구조가 정교하다. 그중에서 두 가지 클래스가 중요하다. 하나는 스트링 스트
림(string stream)으로 스트링과 스트림을 다룬다. 다른 하나는 파일 스트림(file stream)으로 파일을 쉽
게 읽고 쓸 수 있다. 스트림 상태는 플래그(flag)로 기록되며 사용자가 읽거나 설정할 수 있다.
입력 연산자와 출력 연산자를 오버로딩(overloading)하면 기본 데이터 타입을 사용하는 방식처럼
외부 세계와 상호 작용할 수 있다.
I/O 스트림 라이브러리와 달리 파일 시스템 라이브러리(filesystem library)는 C++17부터 표준에
추가됐다. 이 라이브러리는 세 가지 콘셉트 파일과 파일 이름, 경로를 토대로 구성된다. 파일은 디
렉터리도 있고 하드 링크도 있고 심볼릭 링크도 있고 일반 파일도 있다. 경로는 절대 경로와 상대
경로가 있다.
파일 시스템 라이브러리는 파일 시스템을 읽거나 조작하기 위한 강력한 인터페이스를 제공한다.
1.2.6 멀티스레딩
2011년에 발표된 C++11부터 멀티스레딩(multithreading) 라이브러리가 표준으로 들어왔다. 이 라
이브러리는 어토믹 변수(atomic variable), 스레드, 락과 상태 변수 같은 기본 구성 요소로 구성된
다. 이를 토대로 향후 C++ 표준에서 더욱 고급화된 추상화가 제공될 것이다. 그런데 C++11부터
이미 태스크(task)라는 고급 추상화를 제공한다.
33
c++_06.indd 33 2021-11-19 오전 9:25:43