c++ string splitten und ausgeben

#1443012
Lesenswert?

Hallo Forum,

da mir hier schon oft geholfen wurde wenn ich mich mal wieder an euch :)

Ich hab ein kleines Problem in c++ (Borland c builder)

Mir liegt ein String vor in der Form von z.b. "01X01......"

Die Punkte erscheinen in dem richtigen String als ne kombination aus 
zahlen die mir von nem Messumformer gesendet werden... z.b ne Temperatur 
oder so...

Nun möchte ich gern den empfangenen String auf die Kombination 01X01 
überprüfen. Wenn in dem String in den letzten 5 positionen das 01X01 
steht soll mir der rest von dem String in nem Label angezeigt werden.

Nun kam ich da in der Hilfe vom Borland auf die Funktion SubString (int 
Index, int count)...

klingt alles ganz logisch nur komm ich da mit irgendwie nich klar... die 
Funktion splittet also den String vom Anfang (index) bis zum gewählten 
Punkt (count)

testweise sieht das bei mir so aus:

String Test="01X010000022.5";

if(Test.SubString(Test.Length()-5,Test.Length())=="01X01")
 {
  lblTemp->Caption=Test.SubString(0,Test.Length()-5);
 }
 else
 {
  lblTemp->Caption="";
 }

das label zeigt mir halt nur nich das an was es machen soll :)

Wo liegt mein Denkfehler?

Danke schonmal für eure Hilfe

Lg
#1443090
Lesenswert?

Hi,

> Nun möchte ich gern den empfangenen String auf die Kombination 01X01
> überprüfen. Wenn in dem String in den letzten 5 positionen das 01X01
> steht soll mir der rest von dem String in nem Label angezeigt werden.
>
> Nun kam ich da in der Hilfe vom Borland auf die Funktion SubString (int
> Index, int count)...
>
> klingt alles ganz logisch nur komm ich da mit irgendwie nich klar... die
> Funktion splittet also den String vom Anfang (index) bis zum gewählten
> Punkt (count)
>
> testweise sieht das bei mir so aus:
>
> String Test="01X010000022.5";

Hmmm. Oben sagste in den letzten 5 Stellen soll dein 01x01 stehen und 
weiter unten sieht es eher für mich so aus als würdest du sie in den 
ersten fünf Stellen erwarten ?


> if(Test.SubString(Test.Length()-5,Test.Length())=="01X01")

Du prüfst über die Länge des Strings Test.
Die SubString Funktion erwartet von Dir int index und int count. Also 
Anfangswert im String und Anzahl der Zeichen.
---> if(Test.SubString(Test.Length()-5 , 5) == "01X01")
könnte klappen.
Aber für mich sieht es eher so aus als würden diese Zeichen am Anfang 
stehen, also --> if(Test.SubString(0 , 5) == "01X01")

Gruß
Gast #1443163
Lesenswert?

Mh stimmt auch irgendwie... hatte mich bissl an die binäre zählweise 
gehalten... da fängt man ja auch rechts mit 2^0 an... also müsste ich 
dann das ganze eher von linkjs anfangen... ich teste das mal :)

lg
#1443165
Lesenswert?

Jean Player schrieb:
>> if(Test.SubString(Test.Length()-5,Test.Length())=="01X01")
>
> Du prüfst über die Länge des Strings Test.
> Die SubString Funktion erwartet von Dir int index und int count. Also
> Anfangswert im String und Anzahl der Zeichen.
> ---> if(Test.SubString(Test.Length()-5 , 5) == "01X01")
> könnte klappen.
> Aber für mich sieht es eher so aus als würden diese Zeichen am Anfang
> stehen, also --> if(Test.SubString(0 , 5) == "01X01")
>
> Gruß

Vorsicht! Die VCL-Strings (AnsiString, WideString) sind nicht 
null-basiert d.h. die ersten fünf Zeichen erhält man mit 
str.SubString(1, 5)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren