Zum Inhalt springen

Umwandlung string LPCTSTR


wulfgang

Empfohlene Beiträge

Moin,

also bei

cout << "Wechsel in das Verzeichnis erfolgreich\n";

string s_unterordner; 

s_unterordner = s[1] + s[2] + s[3];

cout << s_unterordner.length(); 

//MultiByteToWideChar(CP_THREAD_ACP, MB_COMPOSITE, s_unterordner, ... );

LPCTSTR unterordner;

unterordner = s_unterordner.c_str();

if(connection_pointer->SetCurrentDirectory(unterordner))

erhalte ich

error C2440: '=' : cannot convert from 'const char *' to 'LPCTSTR'

Dann benötige ich wohl const wchar_t*?

Aber MultiByteToWideChar wandelt doch in LPWSTR um? SétCurrentDirectory benötigt doch LPCTSTR? Oder meintest du dass ich mit MultiByteToWideChar erst in LPWSTR und dann mit c_str() in LPCTSTR umwandel?:confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dann benötige ich wohl const wchar_t*?
Mit deinen aktuellen Projekteinstellungen, ja.

Ich sagte es doch schon: Welcher Typ sich hinter TCHAR/LPTSTR/LPCTSTR verbirgt, hängt von deinen Projekteinstellungen ab.

Aber MultiByteToWideChar wandelt doch in LPWSTR um? SétCurrentDirectory benötigt doch LPCTSTR?
Es gibt eigentlich gar keine Methode SetCurrentDirectory. Es gibt SetCurrentDirectoryA und SetCurrentDirectoryW. SetCurrentDirectory ist nur ein Präprozessorsymbol, das entweder auf die eine oder auf die andere Variante verweist. Und das ist von denselben Projekteinstellungen abhängig, die regeln, was TCHAR ist. Das gilt übrigens für fast alle WinAPI- und MFC-Funktionen, die mit Strings arbeiten.

Wenn man durchgängig die T-Varianten benutzt, kann man die Projekteinstellungen zwischen Multibyte und Unicode umschalten, und es lässt sich trotzdem noch immer alles kompilieren. Wenn du das nicht brauchst, solltest du dich vielleicht auf eines von beiden festlegen.

Brauchst du Unicode?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ist es einfacher für mich, wenn ich ANSI benutze?
Vermutlich.

Wo kann ich denn die Projekteinstellungen auf ANSI umstellen? Bin jetzt im PropertyManager->Configuration Properties und dann einfach überall wo Unicode YES vorkommt auf Unicode NO ändern?
Unter General > Character Set auf "Use Multi-Byte Character Set" stellen.
Link zu diesem Kommentar
Auf anderen Seiten teilen

LPCTSTR ist je nach Projekteinstellungen, const char* oder const wchar_t*. Im ersten Fall kannst du einfach unterordner.c_str() benutzen, im zweiten Fall musst du den String umwandeln (MultiByteToWideChar) oder wstring benutzen.

hmm, für sowas gibts doch Makros - zumindest bei ATL/MFC.

CT2CA


string str(CT2CA(_T("...")));

:beagolisc

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...