タイトル通りですどうすれば文字列から一つ前のディレクトリを取得できるのでしょうか? どうやらstd::filesystem::pathを使ってディレクトリ名文字列を分解とかして取得するみたいですがどうやってもできませんどうすればいいのでしょうか?
公式リファレンス: https://cpprefjp.github.io/reference/filesystem/path.html
cpp
1#include <Windows.h> 2#include <stdio.h> 3#include "stdlib.h" 4#include <Fcntl.h> 5#include <io.h> 6#include <iostream> 7#include <compare> 8#include <filesystem> 9 10int main() 11{ 12 13 std::string path = "Music\シャイニーカラーズ\THE IDOLM@STER SHINY COLORS FUTURITY SMI"; 14 std::string st; 15 16 const std::filesystem::path fp = std::filesystem::path(path); 17 printf("%ls", std::filesystem::path(path).c_str()); 18 printf("\n\n"); 19 20 std::filesystem::path f = std::filesystem::path(path).lexically_normal().generic_string(); 21 printf("%ls", f.c_str()); 22 23 24 25 return 0; 26}
ひとつ上の階層のディレクトリ取得方法はepistemeさんの回答のとおりですが、
printf()の結果が"Music\"で切れているのはsetlocale()を呼んでいないために日本語が表示できていないだけですね。
ありがとうございす。wchar_t型文字ではsetlocale();関数が必要なのですね。
回答1件
あなたの回答
tips
プレビュー