Was ist der richtige Weg, wstring nach wchar * zu übertragen? (oder String zu Char *)

7

[Ich bin neu in D (schreibe gerade mein erstes nützliches Programm) und ich habe nicht viel C-Hintergrund - nur ein paar C # und andere meist zeigerlose Sprachen.]

Muss ich vor dem Casting immer '\ 0' an den wstring anhängen? Ist das der einzige Weg um sicherzustellen, dass mein wchar * null-terminiert wird? Ist es eine neue Kopie des wstring, oder wird nur ein Zeiger auf dasselbe wstring geworfen, das du trägst?

    
WootenAround 05.06.2011, 11:11
quelle

3 Antworten

9

Um Windows * W-Funktionen aufzurufen, verwenden Sie Ссылка

Beachten Sie auch, dass Zeichenfolgen Literale bereits 0-terminiert sind, sodass Sie sie direkt übergeben können.

    
Trass3r 05.06.2011 11:30
quelle
9

Die Funktionen toStringz konvertieren D-Strings in C-style-Strings mit Null-Ende.

%Vor%

z.B.

%Vor%

toStringz weist dem Heap nur dann eine neue Zeichenfolge zu, wenn die Zeichenfolge nicht bereits null ist, andernfalls wird nur s.ptr zurückgegeben.

    
Peter Alexander 05.06.2011 11:25
quelle
8

Wenn Sie nur einen Zeiger wünschen, verwenden Sie die Eigenschaft 'ptr' (verfügbar für alle dynamischen Arrays, nicht nur für Strings)

%Vor%

Wenn Sie jedoch etwas mit C verwenden möchten, um sicherzustellen, dass es nicht terminiert ist, verwenden Sie toStringz

%Vor%

toStringz führt keine Kopie durch, wenn die Zeichenfolge bereits null ist.

    
Bernard 05.06.2011 11:28
quelle

Tags und Links