Namespaces
Variants

std::filesystem:: is_empty

From cppreference.net
헤더 파일에 정의됨 <filesystem>
bool is_empty ( const std:: filesystem :: path & p ) ;
(1) (C++17부터)
bool is_empty ( const std:: filesystem :: path & p, std:: error_code & ec ) ;
(2) (C++17부터)

주어진 경로가 빈 파일 또는 디렉터리를 참조하는지 확인합니다.

목차

매개변수

p - 검사할 경로
ec - 오류 발생 시 수정할 에러 코드

반환값

true 만약 p 가 가리키는 경로가 빈 파일이나 디렉터리를 참조하는 경우, false 그렇지 않은 경우. 예외를 던지지 않는 오버로드는 오류가 발생할 경우 false 를 반환합니다.

예외

noexcept 로 표시되지 않은 모든 오버로드는 메모리 할당이 실패할 경우 std::bad_alloc 을(를) throw할 수 있습니다.

1) 기본 OS API 오류 발생 시 std::filesystem::filesystem_error 를 발생시킵니다. 첫 번째 경로 인자로 p 를 사용하고, OS 오류 코드를 오류 코드 인자로 사용하여 구성됩니다.
2) OS API 호출이 실패할 경우 std:: error_code & 매개변수를 OS API 오류 코드로 설정하고, 오류가 발생하지 않을 경우 ec. clear ( ) 를 실행합니다.

예제

#include <cstdio>
#include <filesystem>
#include <fstream>
#include <iostream>
int main()
{
    namespace fs = std::filesystem;
    const fs::path tmp_dir{fs::temp_directory_path()};
    std::cout << std::boolalpha
              << "Temp dir: " << tmp_dir << '\n'
              << "is_empty(): " << fs::is_empty(tmp_dir) << '\n';
    const fs::path tmp_name{tmp_dir / std::tmpnam(nullptr)};
    std::cout << "Temp file: " << tmp_name << '\n';
    std::ofstream file{tmp_name.string()};
    std::cout << "is_empty(): " << fs::is_empty(tmp_name) << '\n';
    file << "cppreference.net";
    file.flush();
    std::cout << "is_empty(): " << fs::is_empty(tmp_name) << '\n'
              << "file_size(): " << fs::file_size(tmp_name) << '\n';
    file.close();
    fs::remove(tmp_name);
}

가능한 출력:

Temp dir: "/tmp"
is_empty(): false
Temp file: "/tmp/fileCqd9DM"
is_empty(): true
is_empty(): false
file_size(): 16

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 3013 C++17 error_code 오버로드가 noexcept로 표시되었으나 메모리를 할당할 수 있음 noexcept 제거됨

참고 항목

(C++17) (C++17)
파일 속성 결정
심볼릭 링크 대상 확인하며 파일 속성 결정
(함수)
(C++17)
경로가 존재하는 파일 시스템 객체를 참조하는지 확인
(함수)