![](/img/trans.png)
[英]Argument of type “LPCWSTR” is incompatible of the parameter of type “LPCSTR”
[英]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;
}
所以我有一個程序,我需要用動態字符 cat 顯示目錄中的所有文件,但它可以在 Borland C++ 中編譯,但在 Visual Studio 15 + Resharper 中它不起作用。 嚴重性代碼說明“char *”類型的項目文件行錯誤(活動)參數與“LPCWSTR”類型的參數不兼容
我實際上找到了另一種解決此錯誤的方法,因為上述方法對我不起作用。
我用(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);
或者
你可以使用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 及更高版本中,用於多字節字符編碼 ( MBCS ) 的 MFC 庫將作為 Visual Studio 的附加組件提供
它適用於任何設置:
#include <tchar.h>
MessageBox(NULL, _T("Dialog creation failed! Aborting.."), _T("Error"), MB_OK);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.