以下代碼:
#include <iostream>
#include <filesystem>
int main()
{
std::filesystem::path path("C:");
std::filesystem::path canonicalPath = std::filesystem::weakly_canonical(path);
std::cout << canonicalPath.string() << std::endl;
}
產生輸出:
C:\Users\andy\source\repos\ConsoleApplication8\ConsoleApplication8
使用 Visual Studio 2019 X64。在 x86-64 gcc 上,它產生了我所期望的:C:根據 godbolt.org。
uj5u.com熱心網友回復:
Windows 和 Linux 在路徑方面有不同的規則。
例如,在 Windows 上,使用驅動器號和冒號僅表示指定驅動器上的當前目錄。此行為是從 DOS 繼承的。
當您在編譯器資源管理器上使用 GCC 構建時,它使用虛擬 Linux 環境,而 Linux 沒有驅動器號。這意味著這C:不是 Linux 中的路徑,而是檔案名。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/513803.html
標籤:C 视窗视觉工作室
下一篇:如何使腳本也用批處理復制目錄樹
