Frage

Was ist der bevorzugte / einfachste Weg TDesC Strings zu manipulieren, zum Beispiel eines Teil zu erhalten.

Ich gebe Ihnen ein Beispiel für mein Szenario.

RBuf16 buf;
...
CEikLabel label;
...
label->SetTextL(buf); // (SetTextL takes a const TDesC&)

Ich mag einen Teil von buf erhalten. So will ich die RBuf16 direkt manipulieren, und wenn ja, was ist der beste Weg?

Gibt es eine Möglichkeit zu const char umwandeln *, so kann ich nur Standard-C-String-Manipulation verwendet werden.

Vielen Dank im Voraus

War es hilfreich?

Lösung

Lesen Sie descriptors.blogspot.com (nach unten scrollen einmal geladen).

Sie kann TDes verwenden :: LeftTPtr, TDes :: RightTPtr oder TDes :: MidTPtr, die Ihnen einen Teil als TPtr geben (das heißt ein Schlagwort, das die Originaldaten manipuliert).

Sie können die TDes verwenden :: Copy-Funktion, wenn Sie eine Kopie Ihrer Teilzeichenfolge erstellen möchten.

Andere Tipps

Best oder nicht, kann ich nicht sagen, aber ich verwende die folgenden Methoden Teilketten von Deskriptoren zu extrahieren:

TDes::LeftTPtr()
TDes::MidTPtr()
TDes::RightTPtr()

oder

TDesC::Left()
TDesC::Mid()
TDesC::Right()

mit dem Unterschied zwischen den beiden Gruppen sind, dass der frühere gibt einen neuen änderbaren Deskriptor, dieser einen neuen nicht modifizierbaren Deskriptor die Teilzeichenfolge enthält.

Während Sie auf der Symbian-Plattform zu entwickeln, würde ich sehr empfehle den Symbian-Konventionen zu folgen, und nicht die von Symbian C ++ zu denken, von einem Standard-C oder C ++ Sicht der ganzen Zeit. Verwenden Sie die Bibliotheken, die Symbian wird speziell zur Verfügung gestellt, anstelle von Standard-C / C ++ Bibliotheken, die Symbian oder nicht direkt unterstützen. Da das ultimative Ziel eines auf dem Symbian entwickelte Anwendung ist auf einem mobilen Gerät laufen, wo Zuverlässigkeit und Robustheit der Anwendungen, die am wichtigsten sind, sollten Sie halten, was Symbian vorzieht und schlägt vor.

Wenn Sie einen Teil von einem RBuf16 wollen, das ist einfach - nur TDes16::MidTPtr verwenden

Sie können ein const char * konvertieren, indem dies zu tun:

TPtr8 narrowBuf;

// Create a buffer with enough space to store every character, plus one for 
// a null terminator
narrowBuf.AllocL( buf.Length() + 1);

// TPtr8::Copy accepts a TDesC16 
narrowBuf.Copy( buf );

// Append a null terminator and return a pointer to the resultant data
const char* ptr = (const char*)narrowBuf.PtrZ();

Doch was haben Sie jetzt eine ist eine verengte Kopie der Originaldaten. Wenn Sie das Etikett wieder jetzt einstellen möchten, müssen Sie es (TDes16 :: Copy (const TDesC8 &)) vor der Verwendung erweitern. Der Versuch, Symbian aussehen wie „normale“ C ++ mit char * und wchar_t zu machen * wirklich funktioniert nicht -. Die Verwendung von Deskriptoren auch in dem O verschanzt

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top