[c++] 파일 입출력 버퍼

C++에서는 파일 입출력을 효율적으로 처리하기 위해 버퍼(buffer)를 사용합니다. 버퍼는 입출력 작업을 일괄적으로 처리하여 성능을 향상시키고, 시스템 호출을 줄여주는 역할을 합니다.

입력 버퍼와 출력 버퍼

C++에서는 입출력 스트림마다 입력 버퍼와 출력 버퍼가 별도로 존재합니다. 입력 버퍼는 데이터를 프로그램으로 읽어오는 역할을 하고, 출력 버퍼는 프로그램에서 파일로 데이터를 쓰는 역할을 합니다.

입력 버퍼는 데이터를 한 번에 모아서 읽기 때문에 여러 번의 파일 입출력 호출을 줄여주어 입출력 성능을 향상시킵니다. 마찬가지로 출력 버퍼는 데이터를 한 번에 모아서 쓰기 때문에 성능을 향상시켜줍니다.

버퍼 비우기

수동으로 버퍼를 비우는 작업도 가능합니다. flush() 함수를 사용하여 출력 버퍼를 비울 수 있으며, ignore() 함수를 사용하여 입력 버퍼를 비울 수 있습니다.

#include <iostream>
int main() {
    std::cout << "Hello, ";
    std::cout.flush();  // 출력 버퍼를 비움
    std::cout << "World!";
}

버퍼 자동 비우기

버퍼는 프로그램이 종료될 때 자동으로 비워집니다. 하지만 프로그램이 예기치 않게 종료되는 경우에는 버퍼가 비워지지 않을 수 있으므로 주의가 필요합니다.

버퍼를 수동으로 비우는 것도 중요하지만, C++는 보통 적절한 시점에 자동으로 버퍼를 비우기 때문에 특별히 주의할 필요는 없습니다.

결론

입력과 출력의 효율적인 처리를 위해 C++는 파일 입출력 용도로 버퍼를 사용합니다. 버퍼를 적절히 관리하여 입출력 성능을 향상시키는 것이 중요합니다.

이상으로 C++ 파일 입출력 버퍼에 관한 간략한 소개를 마치도록 하겠습니다.

참고 문헌: https://www.learncpp.com/cpp-tutorial/188-basic-inputoutput-in-c/