4 Stimmen

kann Parameter von char[#] nicht in LPWSTR umwandeln

Wenn ich diesen Code in Visual C++ kompiliere, erhalte ich den folgenden Fehler. Kann mir helfen, dieses Problem zu lösen

DWORD nBufferLength = MAX_PATH;
char szCurrentDirectory[MAX_PATH + 1];
GetCurrentDirectory(nBufferLength, szCurrentDirectory); 
szCurrentDirectory[MAX_PATH +1 ] = '\0';

Fehlermeldung:

Error   5   error C2664: 'GetCurrentDirectoryW' : cannot convert parameter 2 from 'char [261]' to 'LPWSTR'  c:\car.cpp

5voto

Naveen Punkte 71443

Es scheint, als hätten Sie definiert UNICODE, _UNICODE Compiler-Flags. In diesem Fall müssen Sie den Typ von szCurrentDirectory von char à TCHAR .

5voto

Timbo Punkte 26346

Ihr Programm ist so konfiguriert, dass es als Unicode kompiliert wird. Deshalb ist GetCurrentDirectory GetCurrentDirectoryW, das eine LPWSTR ( wchar_t* ).

GetCurrentDirectoryW erwartet eine wchar_t anstelle von char Array. Sie können dies tun mit TCHAR die - wie GetCurrentDirectory - von der Unicode-Einstellung abhängt und immer den entsprechenden Zeichentyp darstellt.

Vergessen Sie nicht, Ihre '\0' mit einer L um das Zeichenliteral auch unicode zu machen!

0voto

James Ford Punkte 1

Überschriften:

#include <iostream>
#include <fstream>
#include <direct.h>
#include <string.h>
#include <windows.h> //not sure

Funktion zum Abrufen des aktuellen Verzeichnisses:

std::string getCurrentDirectoryOnWindows()
{
    const unsigned long maxDir = 260;
    wchar_t currentDir[maxDir];
    GetCurrentDirectory(maxDir, currentDir);
    std::wstring ws(currentDir);
    std::string current_dir(ws.begin(), ws.end());
    return std::string(current_dir);
}

Zum Aufrufen der Funktion:

std::string path = getCurrentDirectoryOnWindows(); //Output like: C:\Users\NameUser\Documents\Programming\MFC Program 5

Um dir (Ordner) im aktuellen Verzeichnis zu machen:

std::string FolderName = "NewFolder";
std::string Dir1 = getCurrentDirectoryOnWindows() + "\\" + FolderName;
_mkdir(Dir1.c_str());

Dies funktioniert bei mir in MFC C++.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X