-
전문가를 위한 C++ 정리(4)@ 16. 1 ~ 17. 1/C++ 2015. 5. 1. 22:48
56. getline()
string과 함께 사용하는 getline()이 있음..
string myString;
std::getline(cin, myString); //입력 스트림 객체와 string 객체를 참조형 파라미터로 받고 옵셔널하게 구분자를 파라미터로 설정
57. 객체의 출력은 << 연산자 오버로딩
58. 파일 스트림
<fstream> 헤더에 ofstream, istream 클래스가 정의
파일명과 열기모드를 파라미터로 받음(디폴트는 base::out 쓰기모드임, 파일 스트림의 위치가 제일 앞으로 초기화)
ios_base::app
파일을 연 다음 쓰기 작업이 시작되기전에 스트림의 위치를 제일끝으로
덧붙이기 모드
ios_base::ate
파일을 열자마자 스트림의 위치를 파일의 제일 끝으로 올김
ios_base::binary
바이너리 모드로 데이터 입출력
ios_base::in
입력모드
ios_base::out
출력모드
ios_base::trunc
파일으 ㄹ열고 기본 데이터 삭제
seek() 메서드 : 입출력 스트림을 임의의 위치로 옮김
입력 스트림에서는 seekg로 작동, 출력 스트림에서는 seekp가 자동으로 호출됨
메서드는 2개의 오버로딩 버전이 있음..
첫번째는 절대 위치를 지정하는 인자 하나만 받아 해당위치 이동
outStream.seekp(ios_base::beg)
두번쨰는 오프셋과 위치 두개의 인자를 받아 주어진 위치에서 상대적인 오프셋 위치로 이동
outStream.seekp(2,ios_base::beg)
//첫번째 인자는 얼마나 많이 이동할지 지정(ios_base::streampos 타입), 두번째는 이동 기준 위치(ios_base::streamoff 타입)
스트림 위치 사전 정의된것 : ios_base::beg, ::end, ::cur(현재)
tell()메서드 : 스트림의 현재 위치를 알수 있음
현재 위치 값을 리턴함.(seek()을 통해 특정위치로 이동하기전 현재 위치를 기록해두는 용도로 사용함)
똑같이 tellg tellp로 구분..
59. 양방향 I/O
fstream을 이용하면 istream과 ostream을 모두 상속받고 있어 양방향 스트림이 된다.
즉 fstream ioData 이렇게 선언시
출력과 입력과 모두 된다는것..
* 양방향 스트림은 읽기 위치와 쓰기 위치를 유지하기 위해 두개의 분리된 포인터를 사용한다.
이 때문에 읽기 모드와 쓰기 모드를 전환할때마다 seek()메서드를 이용해 스트림을 목적하는 위치로 이동시켜야함
'@ 16. 1 ~ 17. 1 > C++' 카테고리의 다른 글
난수, rand() 함수 (0) 2015.11.17 Understanding and Using C Pointers(기억이 잘 안나는 부분) (0) 2015.06.28 전문가를 위한 C++ 정리(3) (0) 2015.04.21 전문가를 위한 C++ 정리(2) (0) 2015.04.13 예외처리 (0) 2015.03.28