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