C++/Library
2021. 3. 29. 23:59
파일 임의 위치 접근
<fstream>
라이브러리
예제
ifs.seekg()
함수는 첫 번째 인자(Offset)를 받아서 그만큼 이동한다.두 번째 인자로
ios::cur
(current)를 주면, 현재의 위치를 기준으로 오프셋만큼 이동한다.- 이외에도
ios::beg
(begin),ios::end
를 넣을 수 있다.
- 이외에도
ifs.get()
함수는 커서 위치에서 1바이트를 읽고 반환한다.- 위치는 1바이트 뒤로 이동된다.
ifs.tellg()
함수는 현재 위치를 반환한다.#include <iostream> #include <string> #include <fstream> #include <sstream> int main() { using namespace std; const string filename = "my_file.txt"; { ofstream ofs(filename); // abcdefghijklmnopqrstuvwxyz for (char i = 'a'; i <= 'z'; ++i) ofs << i; ofs << endl; } { ifstream ifs(filename); ifs.seekg(5); cout << (char)ifs.get() << endl; ifs.seekg(5, ios::cur); cout << (char)ifs.get() << endl; string str; getline(ifs, str); cout << str << endl; ifs.seekg(0, ios::beg); cout << ifs.tellg() << endl; ifs.seekg(0, ios::end); cout << ifs.tellg() << endl; } } /* stdout stderr f l mnopqrstuvwxyz 0 28 */
파일 하나에 입출력을 같이 할 때는
fstream
클래스를 사용하면 된다.#include <iostream> #include <string> #include <fstream> #include <sstream> int main() { using namespace std; const string filename = "my_file.txt"; //fstream iofs(filename, ios::in | ios::out); fstream iofs(filename); iofs.seekg(5); cout << (char)iofs.get() << endl; iofs.seekg(5); iofs.put('A'); } /* stdout stderr f */ /* my_file.txt abcdeAghijklmnopqrstuvwxyz */
'C++ > Library' 카테고리의 다른 글
C++ atomic (0) | 2021.03.30 |
---|---|
C++ mutex (0) | 2021.03.30 |
C++ fstream (0) | 2021.03.29 |
C++ 정규 표현식 (Regular Expressions) (0) | 2021.03.29 |
C++ 흐름 상태 (Stream States) (0) | 2021.03.29 |