簡體   English   中英

與“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;
}

所以我有一個程序,我需要用動態字符 cat 顯示目錄中的所有文件,但它可以在 Borland C++ 中編譯,但在 Visual Studio 15 + Resharper 中它不起作用。 嚴重性代碼說明“char *”類型的項目文件行錯誤(活動)參數與“LPCWSTR”類型的參數不兼容

要在 Visual C++ 中編譯代碼,您需要使用多字節字符 WinAPI 函數而不是寬字符函數。

設置項目 -> 屬性 -> 高級(或舊版本的常規)-> 字符集選項以使用多字節字符集

另見截圖

我實際上找到了另一種解決此錯誤的方法,因為上述方法對我不起作用。

我用(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 及更高版本中,用於多字節字符編碼 ( 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM