복습용/C++

[Unreal Engine 8기] C++ std::string과 File I/O

조현묵 2026. 3. 25. 11:36
  • std::string
더보기
    • C++ std::string의 필요성
      C언어에서는 문자 배열의 크기를 런타임 중에 늘릴 수 없었습니다.
      이에 대한 대안으로 C++에서는 std::string 클래스가 제공됩니다.
      std::string은 필요에 따라 길이가 변할 수 있습니다.
      게다가 문자열을 수정할 수 있는 여러 API도 제공해줍니다
  • File I/O
더보기
  • ifstream: 파일 입력 스트림

    // In C++
    ifstream InputFile;
    InputFile.open("HelloFile.txt"); // 읽기 전용으로 파일을 오픈.

    // In C.
    FILE* InputFile;
    InputFile = fopen("HelloFile.txt", "r");

  • ofstream: 파일 출력 스트림

    // In C++
    ofstream OutputFile;
    OutputFile.open("HelloFile.txt"); // 쓰기 전용으로 파일을 오픈.(파일이 없으면 만들어 줍니다)

    // In C.
    FILE* OutputFile;
    OutputFile = fopen("HelloFile.txt", "w");

  • fstream: 파일 입력 및 출스트림

    // In C++
    fstream FileStream;
    FileStream.open("HelloFile.txt"); // 읽기와 쓰기 범용으로 파일을 오픈.

    // In C.
    FILE* FilePointer;
    FilePointer = fopen("HelloFile.txt", "r+"); // w+와 다름. w+는 기존 파일의 내용을 삭제합니다.

  • 파일 스트림에 읽고 쓰는 방법
    텍스트 모드에서는 << 연산자와 >> 연산자로 읽고 쓰기가 가능하고,
    바이너리 모드에서는 read() 함수와 write() 함수로 읽고 쓰기가 가능합니다.

  • open()
    파일을 열 때 사용하는 함수입니다.

  • 열기 모드
    파일을 열 때 어떤 모드로 열지를 지정할 수 있습니다.

    - std::ios_base::in
      파일을 읽기 모드로 엽니다.

    - std::ios_base::out
      파일을 쓰기 모드로 엽니다.

    - std::ios_base::app
      파일 끝에 내용을 덧붙이는 모드로 엽니다.

    - std::ios_base::binary
      파일을 열 때 바이너리 모드로 엽니다.

    - std::ios_base::trunc
      파일이 열릴 때 기존 내용을 다 지웁니다.(Truncation)

    InputFile.open("HelloFile.txt", ios_base::in | ios_base::binary);
    // 위와 같이 조합할 수 있습니다.

  • is_open(): 파일이 열려 있는지 확인 할 수 있습니다.

    fstream FileStream;
    FileStream.open("HelloFile.txt");

    if (FileStream.is_open() == true)
    {
        ...
    }

  • close()
    파일을 닫을 때 사용하는 함수입니다.

    // In C++
    ifstream InputFile;
    InputFile.close(); 
    // 사실 InputFile이 선언된 스코프를 벗어날 때 자동으로 close() 되긴 합니다.

    // In C
    FILE *FilePointer;
    fclose(FilePointer);