-2

コードのコンパイラとして 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 コードの出力はありません。

4

1 に答える 1