Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Umwandlung string LPCTSTR

Empfohlene Antworten

Veröffentlicht

Hallo,

ich möchte einen string in LPCTSTR konvertieren.Brauche es für den unten stehenden Code. SetCurrentDirectory will ja LPCTSTR. Gibt es da eine einfache Möglichkeit?

string unterordner; 

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

if(connection_pointer->SetCurrentDirectory(unterordner))

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:

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?

Brauchst du Unicode?

Nei eigentlich nicht. Ist es einfacher für mich, wenn ich ANSI benutze? 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?

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.

Habe jetzt auf ANSI umgestellt.Funktioniert!:uli

Musste erst mal alle wchar_t umstellen.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.