コードのコンパイラとして C++2a 標準の Visual Studio 2019 を使用しています。
std::filesystem::path parentPathX(argv[0]);
std::cout << "Running: " << argv[0] << std::endl;
std::cout << "Path wise: " << parentPathX.string() << std::endl;
std::filesystem::path parentPath = std::filesystem::canonical(parentPathX.parent_path());
String parentPath1 = parentPath.string();
//findAndReplaceAll(parentPath1, " ", "^ ");
std::cout << "Parent Path: " << parentPath1 << std::endl;
標準的であろうと絶対的であろうと、必要な出力は得られません。コマンド全体を引数として渡すのではなくcd
、そのフォルダーまでコマンドを実行します。つまり、
で出力std::filesystem::canonical
C:\Users\Tarun Maganti\source\repos\MWPixelAggr\Release>MWPixelAggr.exe G:\Work\abc\M-4591.tif DN wgs84 G:\Work\abc\TestMP.xlsx 3
Running: MWPixelAggr.exe
Path wise: MWPixelAggr.exe
Is Absolute? 1
Parent Path:
画像でわかるように、標準コードの出力はありません。
で出力std::filesystem::absolute
C:\Users\Tarun Maganti\source\repos\MWPixelAggr\Release>MWPixelAggr.exe G:\Work\abc\M-4591.tif DN wgs84 G:\Work\abc\TestMP.xlsx 3
Running: MWPixelAggr.exe
Path wise: MWPixelAggr.exe
Is Absolute? 1
Parent Path:
画像でわかるように、絶対コードの出力はありません。
入力: 私が実行しているファイル。基本的に/. 正規パス/絶対パスに変換します。
私も絶対に試してみましたが、同じ出力が得られました。
更新: ブースト ファイルシステムを使用して同じコードを試しました。出力は得られましたが、正しくありませんでした。
C:\dasfsa/dsfafsa/sdfsa/a.exe
これは使用できません。その 1 つのバックスラッシュを手動で変換することはできますが、それがある種の難解な機能なのかバグなのかはわかりません。また、バグの場合は、そのスラッシュがどこでどのように変更されるのかわかりません。
で出力boost::filesystem::canonical
C:\Users\Tarun Maganti\source\repos\MWPixelAggr\Release>MWPixelAggr.exe G:\Work\abc\M-4591.tif DN wgs84 G:\Work\abc\TestMP.xlsx 3
Running: MWPixelAggr.exe
Path wise: MWPixelAggr.exe
Is Absolute? 1
Parent Path: C:/Users\Tarun Maganti\source\repos\MWPixelAggr\Release
画像でわかるように、boost::canonical コードの出力はありません。