Visual c++ 无法将参数从字符[#]转换为LPWSTR 我在VisualC++中编译这个代码时,我得到了下面的错误。你能帮我解决这个问题吗 DWORD nBufferLength = MAX_PATH; char szCurrentDirectory[MAX_PATH + 1]; GetCurrentDirectory(nBufferLength, szCurrentDirectory); szCurrentDirectory[MAX_PATH +1 ] = '\0';

Visual c++ 无法将参数从字符[#]转换为LPWSTR 我在VisualC++中编译这个代码时,我得到了下面的错误。你能帮我解决这个问题吗 DWORD nBufferLength = MAX_PATH; char szCurrentDirectory[MAX_PATH + 1]; GetCurrentDirectory(nBufferLength, szCurrentDirectory); szCurrentDirectory[MAX_PATH +1 ] = '\0';,visual-c++,Visual C++,错误消息: Error 5 error C2664: 'GetCurrentDirectoryW' : cannot convert parameter 2 from 'char [261]' to 'LPWSTR' c:\car.cpp 似乎您已经定义了UNICODE、\u UNICODE编译器标志。在这种情况下,您需要将szCurrentDirectory的类型从char更改为TCHAR,您的程序被配置为编译为unicode。这就是为什么GetCurrentDirectory是G

错误消息:

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

似乎您已经定义了
UNICODE、\u UNICODE
编译器标志。在这种情况下,您需要将
szCurrentDirectory
的类型从
char
更改为
TCHAR
,您的程序被配置为编译为unicode。这就是为什么GetCurrentDirectory是GetCurrentDirectoryW,它需要一个
LPWSTR
wchar\u t*

GetCurrentDirectoryW需要
wchar\u t
而不是
char
数组。您可以使用
TCHAR
,它与GetCurrentDirectory一样,取决于unicode设置并始终表示适当的字符类型


不要忘了在
'\0'
前面加上
L
,以便使字符文字也成为unicode

标题:

#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());
调用函数:

#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());
在当前目录中创建目录(文件夹):

#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++中是适用的。