C++ WCHAR Manipulationen

Entwickle ich eine kleine Win32-Anwendung in C++.
Ich habe studiert C++ Grundlagen vor langer Zeit, so dass ich nun vollkommen verwirrt, weil der Zeichenketten in C++. Es gab keine WCHAR oder TCHAR nur char und String.
Nach einer kleinen Untersuchung habe ich beschlossen, nicht zu verwenden TCHAR.

Mein Problem ist ganz einfach, denke ich, aber ich finde keine klare Anleitung, wie Sie zu manipulieren strings in C++. Betroffen von PHP coding letzten paar Jahren habe ich erwartet, dass etwas, das einfach mit Streichern Manipulationen und war falsch!

Einfach, alles, was ich brauche, ist, um neue Daten in eine Zeichenfolge um.

    WCHAR* cs = L"\0";
    swprintf( cs, "NEW DATA" );

Dies war mein Erster Versuch. Beim Debuggen meiner app habe ich untersucht, swprintf stellt nur die ersten 2 chars auf meinem cs var. Ich habe gelöst mein problem auf diese Weise:

    WCHAR cs[1000];
    swprintf( cs, "NEW DATA" );

Aber in der Regel diesen trick scheitern könnte, da in meinem Fall neue Daten nicht konstanter Wert, sondern eine andere variable, das könnte potentialy breiter sein, als 1000 chars lang. Und mein code sieht wie folgt aus:

    WCHAR cs[1000];
    WCHAR* nd1;
    WCHAR* nd2;
    wcscpy(nd1, L"Some value");
    wcscpy(nd2, L"Another value"); //Actually these vars stores the path for user selected folder
    swprintf( cs, "The paths are %s and %s", nd1, nd2);

In diesem Fall gibt es die Möglichkeit, als nd1 und nd2 gesamtzeichenzahl könnte größer sein als 1000 chars so wichtige Daten verloren.

Die Frage ist, wie kann ich kopieren Sie alle Daten, die ich brauche, um WCHAR-string deklariert diese Weise WCHAR* wchar_var; ohne alles zu verlieren?

P. S. Da bin ich auf Russisch die Frage unklar ist. Lassen Sie mich nun zu diesem, und ich werde versuchen zu erklären, mein Problem klarer und komplexer.

Sie sollten wahrscheinlich verwenden Sie wchar_t und std::wstring. Und Lesen Sie ein wenig mehr über Zeiger, die Letzte code-snippet kopiert Daten mit nicht initialisierten Zeigern, das heißt, Sie überschreiben könnte etwas in den Speicher des Prozesses.
Ich werde auf jeden Fall Lesen über Pointer!
Ich habe den tag string.
Dann sollten Sie wissen, dass die Verwendung eines nicht initialisierten Zeiger ist schlecht, ja?
Ja, sicherlich! Ich habe gelernt, über Zeiger, wenn ich untersucht habe, in der Schule, aber das war vor langer Zeit, also muss ich mein wissen auffrischen. Vielen Dank!

InformationsquelleAutor Geradlus_RU | 2012-11-13

Schreibe einen Kommentar