Zum Inhalt springen

TCHAR[]/wstring zu string casten bei Unicode-Zeichensatz


PL1994

Empfohlene Beiträge

Hallo,

mein Programm verwendet einen Unicode-Zeichensatz, weshalb die gängigste Lösung für mein Problem, die ich finden konnte, nicht funktioniert (einfach zu char* casten).

Ich möchte eine Datenbank öffnen (SQLite) mit "sqlite3_open". Als erstes Argument erwartet die Funktion einen const char*. Ich will die Datenbank in einem bestimmten Verzeichnis öffnen, basierend auf dem AppData-Verzeichnis, das ich so bekomme:


SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL, 0, dataDirectory)

"dataDirectory" ist dann ein TCHAR[].

1. Problem: Was mache ich mit der Variable "dataDirectory", um sie als const char* verwenden zu können (einfach casten geht grauenvoll schief)?

2. Problem: Ich würde beim Aufruf von "sqlite3_open" gerne noch einen String anhängen, ohne dabei die Variable "dataDirectory" zu verändern (also nicht mit strcat oder Ähnlichen) - mit "+" klappt das nur bei "string"-Variablen, wie geht das ansonsten?

Gruß

PL1994

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ein Pointer muss immer auf etwas "zeigen". Sprich momentan zeigt dein Pointer auf keine Adresse im Speicher (NULL). Weshalb du wahrscheinlich eine NullPointerException bekommst.


char* dataDirectory = new char[MAX_PATH];

Ansonsten würde ich mir mal an deiner stelle std::string bzw std::wstring anschauen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was du geschrieben hast, trifft auf Java zu, aber nicht auf C++.

In C++ ist ein uninitialisierter Zeiger nicht automatisch NULL.

Es gibt auch keine vorgeschriebene Reaktion auf das Dereferenzieren von uninitialisierten (oder NULL-) Zeigern. Das Verhalten ist undefiniert.

Und new sollte man hier auch nicht benutzen. C++ hat keinen Garbage Collector. Rohe Zeiger sind nicht Exception-sicher und können Speicherlecks erzeugen.

Besser wäre

char dataDirectory[MAX_PATH];

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...