最終更新日時(UTC):
が更新

履歴 編集

function
<filesystem>

std::filesystem::path::has_relative_path(C++17)

bool has_relative_path() const;

概要

パスにルートパスからの相対パスが含まれているか判定する。

パスにルートパスのみが含まれていれば、falseが返る。

戻り値

POSIXベースシステムでの例

#include <iostream>
#include <filesystem>

namespace fs = std::filesystem;

int main()
{
  fs::path p = "/usr/bin/clang";

  fs::path root_p = p.root_path();
  fs::path rel_p = p.relative_path();
  std::cout << "root path : " << root_p << std::endl;
  std::cout << "relative_path : " << rel_p << std::endl;

  if (p.has_relative_path()) {
    std::cout << "has relative path from root path" << std::endl;
  }
  else {
    std::cout << "doesn't have relative path from root path" << std::endl;
  }
}

出力

root path : "/"
relative_path : "usr/bin/clang"
has relative path from root path

Windowsでの例

#include <iostream>
#include <filesystem>

namespace fs = std::filesystem;

int main()
{
  fs::path p = "C:/Program Files/a.txt";

  fs::path root_p = p.root_path();
  fs::path rel_p = p.relative_path();
  std::cout << "root path : " << root_p << std::endl;
  std::cout << "relative_path : " << rel_p << std::endl;

  if (p.has_relative_path()) {
    std::cout << "has relative path from root path" << std::endl;
  }
  else {
    std::cout << "doesn't have relative path from root path" << std::endl;
  }
}

出力

root path : "C:\"
relative_path : "Program Files\a.txt"
has relative path from root path

Windowsでの例は、Visual C++が正式にファイルシステムライブラリをサポートしていないことから、未検証のサンプルコード・出力となっている。

バージョン

言語

  • C++17

処理系