Несовместим с параметром типа "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"
5 ответов
для компиляции кода в Visual C++ вам нужно использовать многобайтовые функции Char WinAPI вместо широких функций char.
Set Проект - > Свойства - > Общие - > Набор Символов до Использовать Многобайтовый Набор Символов
Я действительно нашел другой способ решить эту ошибку, так как выше метод не работал для меня.
Я бросил все мои постоянные символьные строки с (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++?
или
можно использовать тип 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);