与类型为“的参数不兼容”;LPCWSTR"; #包括“stdafx.h” #包括 #包括 #包括 #包括 使用名称空间std; 类目录 { 公众: char*cat; 目录() { 猫; } 无效虚拟显示文件() { } }; 内部类:public Dir { 公众: 无效虚拟显示文件() { 手感研究; WIN32_FIND_DATA pFileData; hSearch=FindFirstFile(cat和pFileData); if(hSearch!=无效的\u句柄\u值) 做 { //if((pFileData.dwFileAttributes和文件属性目录)) Cuth在VisualC++中编译代码需要使用多字节CHAR WiAPI函数而不是宽字符的函数。
设置项目->属性->常规->字符集选项以使用多字节字符集我实际上找到了另一种解决此错误的方法,因为上述方法对我不起作用与类型为“的参数不兼容”;LPCWSTR"; #包括“stdafx.h” #包括 #包括 #包括 #包括 使用名称空间std; 类目录 { 公众: char*cat; 目录() { 猫; } 无效虚拟显示文件() { } }; 内部类:public Dir { 公众: 无效虚拟显示文件() { 手感研究; WIN32_FIND_DATA pFileData; hSearch=FindFirstFile(cat和pFileData); if(hSearch!=无效的\u句柄\u值) 做 { //if((pFileData.dwFileAttributes和文件属性目录)) Cuth在VisualC++中编译代码需要使用多字节CHAR WiAPI函数而不是宽字符的函数。,c++,visual-c++,C++,Visual C++,设置项目->属性->常规->字符集选项以使用多字节字符集我实际上找到了另一种解决此错误的方法,因为上述方法对我不起作用 MessageBox(NULL, L"Dialog creation failed! Aborting..", L"Error", MB_OK); 我用(LPCWSTR)铸造了所有常量字符串。解决方案如下所示 早期 #include "stdafx.h" #include <windows.h> #include <stdio.h> #include
MessageBox(NULL, L"Dialog creation failed! Aborting..", L"Error", MB_OK);
我用(LPCWSTR)
铸造了所有常量字符串。解决方案如下所示早期
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <iostream>
#include <dos.h>
using namespace std;
class Dir
{
public:
char* cat;
Dir()
{
cout << "(C:/*)\n";
cat = new char[50];
cin >> cat;
}
void virtual ShowFiles()
{
}
};
class Inside : public Dir
{
public:
void virtual ShowFiles()
{
HANDLE hSearch;
WIN32_FIND_DATA pFileData;
hSearch = FindFirstFile(cat, &pFileData);
if (hSearch != INVALID_HANDLE_VALUE)
do
{
// if ((pFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
cout << pFileData.cFileName << "\n";
} while (FindNextFile(hSearch, &pFileData));
FindClose(hSearch);
}
};
int main()
{
Dir *obj1[2];
obj1[1] = new Inside;
obj1[1]->ShowFiles();
return 0;
}
铸造到LPCWSTR后
MessageBox(NULL,"Dialog creation failed! Aborting..", "Error", MB_OK);
因此,只要复制
(LPCWSTR)
并粘贴到生成此错误的任何位置,即可解决我的所有错误。解决此问题的另一种方法是在字符串前面使用L
宏
MessageBox(NULL, (LPCWSTR) "Dialog creation failed! Aborting..", (LPCWSTR) "Error", MB_OK);
见:
或
您可以使用wchar\t
MessageBox(NULL, L"Dialog creation failed! Aborting..", L"Error", MB_OK);
class目录
{
公众:
wchar_t*猫;
目录()
{
wcout>cat;
}
无效虚拟显示文件()
{
}
};
在Visual Studio 2013及更高版本中,将作为Visual Studio的附加组件提供用于多署名字符编码(MBCS)的MFC库。它将适用于任何设置:
class Dir
{
public:
wchar_t* cat;
Dir()
{
wcout << "(C:/*)\n";
cat = new wchar_t[50];
wcin >> cat;
}
void virtual ShowFiles()
{
}
};
#包括
MessageBox(NULL,_T(“对话框创建失败!正在中止…”),_T(“错误”),MB_OK);
或者,停止使用基于TCHAR
的API,改用基于char
的API(findfirstflea()
和WIN32\u FIND\u DATAA
),或者停止在任何地方使用char
而改用wchar\t
,然后使用基于wchar\code>的API(std::wcin
,findfirstflew>)
和WIN32_FIND_DATAW
)。我已经尝试过了,当我首先看到问题时,我会在堆栈上搜索它,然后我尝试自己解决它,如果我做不到,我会问它。上面Remy提供的所有备选方案也应该可以。Пжжааааа:我建议使用utf-8(多字节)任何地方都可以。旧的16位MS-DOS编译器不支持它,但在现代编译器上,您可以声明无符号字符unicode[]=u8”、€€€€€€€€€€€€€€“
并随时可以使用。或者字符unicode[]=u”、€€€€€€
使用宽API。在Visual Studio 2019中,这现在映射到:Project->Properties->Advanced->Character->use Multi-Byte Character Set与错误无关,但是cin>>cat
是一个等待发生的缓冲区溢出。使用cin>>setw(50)>>cat
。或者切换到std::string
和std::getline()
。这可能不适合你的问题,但搜索此错误的人最终会出现在这篇文章中(就像我一样),因此,它可能会帮助其他人