无法将参数从char [#]转换为LPWSTR

时间:2011-02-22 07:47:25

标签: visual-c++

当我在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

3 个答案:

答案 0 :(得分:5)

您似乎已定义UNICODE, _UNICODE编译器标志。在这种情况下,您需要将szCurrentDirectory的类型从char更改为TCHAR

答案 1 :(得分:5)

您的程序配置为编译为unicode。这就是为什么GetCurrentDirectory是GetCurrentDirectoryW,它需要LPWSTRwchar_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 ++中对我有效。