-
C++ std::ofstream 사용하는 방법프로그래밍/C/C++ 2023. 2. 7. 16:10
📝
C++에서는 ofstream클래스를 사용하여 파일에 쓸 수 있습니다.
이 ofstream 클래스는 표준 C++ 라이브러리의 일부이며 파일에 쓰기 위한 스트림 기반 인터페이스를 제공합니
이 ofstream클래스는 다음을 포함하여 파일에 데이터를 쓰기 위한 여러 멤버 함수를 제공합니다.
- open: 쓰기용 파일을 엽니다.
- write: 데이터 블록을 파일에 씁니다.
- put: 파일에 단일 문자를 씁니다.
- operator<<: 데이터 스트림을 파일에 기록합니다.
객체 로 파일을 열고 ofstream 새 데이터를 작성하여 파일의 내용을 업데이트할 수 있습니다.
파일 끝에 ios::app 데이터를 추가하려면 플래그 를 사용하여 파일을 열 수 있습니다
💡
#include <fstream> #include <iostream> int main() { std::ofstream outfile; outfile.open("file.txt", std::ios::app); outfile << "This is a new line." << std::endl; outfile.close(); return 0; }
이 코드는 추가 모드에서 파일을 열고 file.txt 파일의 끝까지 "This is a new line" 이라는 문자열을 씁니다.
✨
ofstream 을 사용할 때 아주 재밌는 내용이 있다.
ofstream.write( buffer, 4096 ) 이라는 코드를 사용하여 4096Byte 만큼의 정보를 특정한 파일에 데이터로써 쓰고 싶었다.
하지만, 파일이 자기 마음대로 버퍼를 잡아서 쓰는 것 같고, 바이너리 용량이 예측한 용량이 아니였다.
이유가 뭐냐하면,
파일을 열 때 Binary 라는 것을 명시 해주지 않으면 해당 Windows 자체적으로 추가적인 내용을 쓰기도한다.
위 샘플 코드에서 만약 패킷정보와 같이 고유하고, 바이너리성 정보를 갖는 데이터 라면 다음과 같이 파일을 열어주어야한다.
outfile.open("file.bin", std::ios_base::binary);
open 함수를 사용할 때 위와 같은 바이너리 플래그 정보를 같이 전달해야한다.
그래야, write를 할 때 원하는 크기만큼만 파일에 작성한다.
'프로그래밍 > C/C++' 카테고리의 다른 글
🖥️ C++에서 윈도우 프로그램 동시 실행 방지하기 (0) 2023.02.28 C++20 코루틴 기능을 활용한 비동기 프로그래밍 예제 (0) 2023.02.23 C++ std::thread와 std::mutex를 사용한 멀티스레딩 예제 (0) 2023.02.22 C/C++ 콘솔창에서 커서를 변경해보자 (GetConsoleScreenBufferInfo, SetConsoleCursorPosition) (0) 2023.01.19 C/C++ Struct Memory Padding (0) 2022.12.28