前回(ドライブ文字を使わないパス指定)の少し変わったパス文字列、<filesystem>のpathだとどうなるのか、気になって試してみました。

#include <filesystem>
#include <iostream>
 
int main()
{
  using namespace std::experimental::filesystem;
 
  path x(LR"(\\?\Volume{e96621af-7084-11e3-80b0-XXXXXXXXXXXX}\Windows\system.ini)");
  std::wcout << x.root_name() << std::endl;
}

root_nameは、ドライブ文字を含むパスであれば、ドライブ文字の部分を返すメンバー関数です。

これをVisual C++ 2017 (15.3)でコンパイルします。実行結果はこうなりました。

\\?

これはつまり、UNCのため、バックスラッシュ2つで始まる部分はroot name扱いということなのだと思います。Volume{……}までroot name扱いにはなりませんでした。

スポンサード リンク

この記事のカテゴリ

  • ⇒ 変わったパスとVC++のpathクラス
  • ⇒ 変わったパスとVC++のpathクラス