C++ 从C+;获取图片路径+;

C++ 从C+;获取图片路径+;,c++,windows,C++,Windows,在Win 32(不是.NET)中,以LPSTR的形式获取图片路径的最可靠方法是什么?尝试将该函数与CSIDL一起使用 差不多 #include <windows.h> #include <iostream> #include <shlobj.h> #pragma comment(lib, "shell32.lib") int main() { CHAR mypicturespath[MAX_PATH]; HRESULT result =

在Win 32(不是.NET)中,以LPSTR的形式获取图片路径的最可靠方法是什么?

尝试将该函数与CSIDL一起使用

差不多

#include <windows.h>
#include <iostream>
#include <shlobj.h>

#pragma comment(lib, "shell32.lib")

int main() { 
    CHAR mypicturespath[MAX_PATH];
    HRESULT result = SHGetFolderPath(NULL, CSIDL_MYPICTURES, NULL, SHGFP_TYPE_CURRENT, mypicturespath);        
    std::cout << "My Pictures : " << mypicturespath << "\n";
    return 0;
}
#包括
#包括
#包括
#pragma注释(lib,“shell32.lib”)
int main(){
CHAR mypicturespath[MAX_PATH];
HRESULT result=SHGetFolderPath(NULL,CSIDL_MYPICTURES,NULL,SHGFP_TYPE_CURRENT,mypicturespath);
std::cout尝试将该函数与CSIDL一起使用

差不多

#include <windows.h>
#include <iostream>
#include <shlobj.h>

#pragma comment(lib, "shell32.lib")

int main() { 
    CHAR mypicturespath[MAX_PATH];
    HRESULT result = SHGetFolderPath(NULL, CSIDL_MYPICTURES, NULL, SHGFP_TYPE_CURRENT, mypicturespath);        
    std::cout << "My Pictures : " << mypicturespath << "\n";
    return 0;
}
#包括
#包括
#包括
#pragma注释(lib,“shell32.lib”)
int main(){
CHAR mypicturespath[MAX_PATH];
HRESULT result=SHGetFolderPath(NULL,CSIDL_MYPICTURES,NULL,SHGFP_TYPE_CURRENT,mypicturespath);

std::cout将
SHGetFolderPath()
API函数与
CSIDL\u MYPICTURES
标志一起使用。

SHGetFolderPath()
API函数与
CSIDL\u MYPICTURES
标志一起使用。

shGetKnownderPath
是“新方法”是的,但是OP没有指定Windows版本。而且
SHGetFolderPath
也适用于新的Windows版本。OP要求将字符串作为LPSTR(即基于字符的字符串)获取。在这种情况下,我认为最好显式使用函数的…A()结尾形式(即SHGetFolderPathA),考虑到Visual Studio的现代版本默认使用Unicode构建(而不是ANSI/MBCS),因此SHGetFolderPath将扩展为SHGetFolderPathW。顺便说一句:我想知道OP为什么要求LPSTR:在当今,Unicode(所以LPWSTR)应该是默认的文本编码形式。
ShGetKnowlderPath
是“新方法”是的,但是OP没有指定Windows版本。而且
SHGetFolderPath
也适用于新的Windows版本。OP要求将字符串作为LPSTR(即基于字符的字符串)获取。在这种情况下,我认为最好显式使用函数的…A()结尾形式(即SHGetFolderPathA),考虑到VisualStudio的现代版本使用Unicode构建作为默认值(而不是ANSI/MBCS),因此SHGetFolderPath将扩展为SHGetFolderPathW。顺便说一句:我想知道为什么OP要求LPSTR:在这些日子里,Unicode(所以LPWSTR)应该是默认的文本编码形式。