当我在Visual C ++中编译此代码时,我得到以下错误。可以帮我解决这个问题..
DWORD nBufferLength = MAX_PATH;
char szCurrentDirectory[MAX_PATH + 1];
GetCurrentDirectory(nBufferLength, szCurrentDirectory);
szCurrentDirectory[MAX_PATH +1 ] = '\0';
错误讯息:
Error 5 error C2664: 'GetCurrentDirectoryW' : cannot convert parameter 2 from 'char [261]' to 'LPWSTR' c:\car.cpp
答案 0 :(得分:5)
您似乎已定义UNICODE, _UNICODE
编译器标志。在这种情况下,您需要将szCurrentDirectory
的类型从char
更改为TCHAR
。
答案 1 :(得分:5)
您的程序配置为编译为unicode。这就是为什么GetCurrentDirectory是GetCurrentDirectoryW,它需要LPWSTR
(wchar_t*
)。
GetCurrentDirectoryW需要wchar_t
而不是char
数组。您可以使用TCHAR
执行此操作,它与GetCurrentDirectory一样,取决于unicode设置,并始终表示相应的字符类型。
不要忘记在'\0'
前添加L
,以便制作char字面的unicode!
答案 2 :(得分:0)
标题:
#include <iostream>
#include <fstream>
#include <direct.h>
#include <string.h>
#include <windows.h> //not sure
获取当前目录的功能:
std::string getCurrentDirectoryOnWindows()
{
const unsigned long maxDir = 260;
wchar_t currentDir[maxDir];
GetCurrentDirectory(maxDir, currentDir);
std::wstring ws(currentDir);
std::string current_dir(ws.begin(), ws.end());
return std::string(current_dir);
}
要调用功能:
std::string path = getCurrentDirectoryOnWindows(); //Output like: C:\Users\NameUser\Documents\Programming\MFC Program 5
要在当前目录中创建目录(文件夹):
std::string FolderName = "NewFolder";
std::string Dir1 = getCurrentDirectoryOnWindows() + "\\" + FolderName;
_mkdir(Dir1.c_str());
这在MFC C ++中对我有效。