开发者

cant convert parameter from char[#] to LPWSTR

When I compile this code in Visual C++, I got the below er开发者_如何转开发ror. Can help me solve this issue..

DWORD nBufferLength = MAX_PATH;
char szCurrentDirectory[MAX_PATH + 1];
GetCurrentDirectory(nBufferLength, szCurrentDirectory); 
szCurrentDirectory[MAX_PATH +1 ] = '\0';

Error message:

Error   5   error C2664: 'GetCurrentDirectoryW' : cannot convert parameter 2 from 'char [261]' to 'LPWSTR'  c:\car.cpp


Your program is configured to be compiled as unicode. Thats why GetCurrentDirectory is GetCurrentDirectoryW, which expects a LPWSTR (wchar_t*).

GetCurrentDirectoryW expects a wchar_t instead of char array. You can do this using TCHAR, which - like GetCurrentDirectory - depends on the unicode setting and always represents the appropriate character type.

Don't forget to prepend your '\0' with an L in order to make the char literal unicode, too!


It seems you have define UNICODE, _UNICODE compiler flags. In that case, you need to change the type of szCurrentDirectory from char to TCHAR.


Headers:

#include <iostream>
#include <fstream>
#include <direct.h>
#include <string.h>
#include <windows.h> //not sure

Function to get current directory:

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);
}

To call function:

std::string path = getCurrentDirectoryOnWindows(); //Output like: C:\Users\NameUser\Documents\Programming\MFC Program 5

To make dir (Folder) in current directory:

std::string FolderName = "NewFolder";
std::string Dir1 = getCurrentDirectoryOnWindows() + "\\" + FolderName;
_mkdir(Dir1.c_str());

This works for me in MFC C++.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜