繁体   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