簡體   English   中英

C ++獲取目錄中文件的完整路徑

[英]C++ get full path to file in directory

我有一個程序將用戶的壁紙設置為文件。 我需要獲取圖像文件的完整路徑

這是我的代碼

#include <windows.h>
int main()
{
    FreeConsole();
    const wchar_t *filenm = L"hay.jpg"; //Get path to hay.jpg
    bool isWallSet = SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, 
    (void*)filenm, SPIF_UPDATEINIFILE);
    return 0;
}

如果您使用Viual Studio 2015,則可以使用新的文件系統庫。

#include <filesystem>
using filesystem = std::experimental::filesystem::v1;
  ...
  const wchar_t *filename = filesystem::canonical(L"hay.jpg").c_str();
  ...

假設有問題的文件在您當前的工作目錄中, GetFullPathName聽起來是個好主意。 它需要一個文件名並通過預先添加當前工作目錄將其轉換為完整路徑。

請特別注意文檔中的警告:您無法在多線程程序中安全地使用此API,因為當前工作目錄被保存為進程范圍內的全局變量,該變量不是線程安全的。

還要注意,API將返回一個路徑,無論文件是否存在於工作目錄中; 它只需要你給它的文件名並預先設置當前的工作目錄。

#include <windows.h>

int main()
{
  char filename[] = "test.txt";
  char fullFilename[MAX_PATH];

  GetFullPathName(filename, MAX_PATH, fullFilename, nullptr);

  MessageBox(NULL, fullFilename, "DEBUG", MB_OK);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM