与"LPCWSTR"型参数不兼容
Incompatible with parameter of type "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;
}
所以我有一个程序,我需要用动态char cat显示目录中的所有文件,但它可以在Borland c++中编译,但在Visual Studio 15 + Resharper中它不起作用。严重性代码描述项目文件行"char *"类型的参数与"LPCWSTR"类型的参数不兼容
要在Visual c++中编译代码,您需要使用多字节字符WinAPI函数而不是宽字符函数。
Set Project ->属性→高级(或。一般用于旧版本)->使用多字节字符集
的字符集选项也见截图
我实际上找到了另一种方法来解决这个错误,因为上面的方法对我不起作用。
我用(LPCWSTR)
来强制转换所有常量字符串。解是这样的
早些时候
MessageBox(NULL,"Dialog creation failed! Aborting..", "Error", MB_OK);
转换到LPCWSTR后
MessageBox(NULL, (LPCWSTR) "Dialog creation failed! Aborting..", (LPCWSTR) "Error", MB_OK);
所以只要复制(LPCWSTR)
并粘贴到这个错误产生的地方就解决了我所有的错误
另一种解决这个问题的方法是在字符串前面使用L
宏。
MessageBox(NULL, L"Dialog creation failed! Aborting..", L"Error", MB_OK);
参见:'L'在前面的字符串意味着在c++ ?
或
c++中字符串的L前缀
您可以使用 wchar_t
class Dir
{
public:
wchar_t* cat;
Dir()
{
wcout << "(C:/*)n";
cat = new wchar_t[50];
wcin >> cat;
}
void virtual ShowFiles()
{
}
};
在Visual Studio 2013及以后的中,用于多字节字符编码的MFC库(MBCS)将作为Visual Studio
任何设置都可以:
#include <tchar.h>
MessageBox(NULL, _T("Dialog creation failed! Aborting.."), _T("Error"), MB_OK);
相关文章:
- 我收到同义重复编译器错误。我应该如何修复"类型"X"的参数与类型"X"的参数不兼容?
- Qt:如何使不兼容的发送方/接收方参数兼容?
- 视觉工作室 2017;启用 /permissive 时,类型 "const wchar_t *" 的参数与类型 "PWSTR" 的参数不兼容
- 类型为 "int*" 的参数与 C++ 中错误类型"int**"参数不兼容
- C++ 类型的参数与 void (__cdecl*)(void) 类型的参数不兼容,当调用 std::atexit()
- OPENCL 警告:不兼容的指针类型将'float __global[16]'传递给类型为 '__global float4 的参数 *
- 发生 Qt5.11 应用插件构建错误:信号和插槽参数不兼容
- C++ 类型 "char" 的参数与类型 "const char" 的参数不兼容
- Qt C++:静态断言失败:信号和插槽参数不兼容
- 类型 "const char *" 的参数与类型 "char *" 的参数不兼容
- 如何警告 C 中 void 指针上的参数不兼容的类型
- 类型 "const char*" 的参数与类型 "char*" 的参数不兼容。但是为什么?:(
- 类型 "const char*" 的参数与类型 "Person" 的参数不兼容
- 类型 "const char *" 的参数与类型 "LPCWSTR" 的参数不兼容
- 是否可以安全地引用具有与模板不兼容的模板参数的C++模板类型?
- 创建进程使用路径时出现错误事件:类型 "char *" 的 E0167 参数与类型 "LPWSTR" 的参数不兼容
- 类型为“const [structname] *”的参数与类型为“const [structname] *”的参数不兼容
- 类型 "const char *" 的默认参数与类型 "char *" 的参数不兼容
- 类型 "const char *" 的参数与 "LPSTR" C++ 类型的参数不兼容
- C++中的C代码不兼容参数错误