Zero-Terminating bei CString *argh*
-
Hi all
ich lese aus einem XML File einen Wert. z.B. VERSION = "1.05".
Ich erhalte als Daten allerdings 5, anstatt die eigentlichen 4 Zeichen;
CString sVal = getXMLValue(VERSION); // sVal hat die Länge 5 (also 1.05\0).
Ich dachte immer, CString sei selbstterminierend (also 0 ist nicht nötig und wird auch von CString nicht akzeptiert...).
Leider kann man die NULL scheinbar doch anfügen wie dieser Code zeigt.CString sVal = getXMLValue(VERSION); CString sNew = sVal + "hallo";
<hallo> wird nicht angehängt. Ursache: sNew erhält alle 5 Zeichen von sVal und kann somit folglich nach der \0 keine weiteren Daten akzeptieren.
Frage: Gibt es eine spez.-Funktion, welche das "zusätzliche '\0' entfernt oder bin ich verdammt, das jeweils so zu machen:
CString sVal = getXMLValue(VERSION); CString str; for(int i=0; i<sVal.GetLenth(); i++){ if(sVal.GetAt(i)==0) return; str+=sVal.GetAt(i); } // jetzt hat str den Wert "1.05" und nicht mehr "1.05\0"
-
hast du die Funktion getXMLValue selbst geschrieben? Dann ändere es da doch einfach um. :xmas2:
-
Paul_C. schrieb:
hast du die Funktion getXMLValue selbst geschrieben? Dann ändere es da doch einfach um. :xmas2:
Ne eben nicht
-
Denn normalerweise kannst du an einem CString-Objekt weitere Strings anhängen. Scheint also, dass die Funktion '\0' anhängt.
Vielleicht kannst du auch strcat() verwenden. Oder gibt es nicht auch noch CString::Append() ?
-
Bist du dir wirklich sicher das das so ist?
Ist CString s = "\0"; also ein Zeichen lang?
-
sicher?? schrieb:
Bist du dir wirklich sicher das das so ist?
Ist CString s = "\0"; also ein Zeichen lang?
also nachdem die Ausgabe "(v1.05)" nie klappte und ich eigentlich keinen Fehler in meindem code sah:
CString sVers = "(v" + sVal+ ")"; //gibt immer "(v1.05"
guckte ich mittels Schlaufe, was drinnen war...
for(int i=0; i<sVal.GetLenth(); i++){ int x = (int) sVal.GetAt(i); } // x hat die Werte: 49, 46, 48, 53, 0 //GetLenth() gibt 5 zurück, sollte aber eigentlich die 4 zurückgeben..
So von dem her ja: ich bin sicher
Edit: vielleicht muss ich mal den Quellcode von dier XMLget() Methode organisieren. Ist doch einfach schrecklich so was!
-
Hast du den Quellcode von getXMLValue?