• 21.08.2025, 20:32
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

iNFiNiTE

God

[c++] string anhand verschiedener größen splitten?

Donnerstag, 4. Oktober 2007, 18:23

nabend,

ich weiß dass das topic ein bisschen schräg klingt, daher hier meine erläuterung: ich hab nen string der wie folgt aufgebaut ist:

Quellcode

1
int|string|char|int|int

ein bsp wäre zbsp:

Quellcode

1
33|hallo\0|b|344|8438
(das | zeichen dient nur zur besseren lesbarkeit!)

string splitten ist ja kein problem; den "hallo" string auslehen ist auch kein problem, muss ich ja nur mit ner while auslesen bis ich zum \0 komme. der char ist natürlich auch einfach, nur die ints machen mir sorgen..
denn ich weiß ja nicht ob der int zbsp nur ne 1 ist oder eben 23434; das heißt ich kann ja nicht einfach sagen les nur die erste stelle im string aus, sondern eben den ganzen int. als idee hätte ich eben die bytegröße (4bytes) des strings auszulesen, nur wie mach ich das am besten? und wie gehe ich bei den letzten beiden ints vor? da muss ich denke ich zwangsweise ein \0 nutzen, sonst weiß man ja nicht wo der erste int aufhört und der zweite anfängt..

hilfreiche kommentare? ;)

danke,
messi

Eumel

God

Re: [c++] string anhand verschiedener größen split

Donnerstag, 4. Oktober 2007, 19:11

Hää?

Du hast

Quellcode

1
char *str = "12text\0b555222";


und willst da jetzt

12
text
b
555
222

auslesen? Oder woher weißt du, dass es nicht

12
text
b
5
55222

ist?

MfG
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.

iNFiNiTE

God

Re: [c++] string anhand verschiedener größen split

Donnerstag, 4. Oktober 2007, 19:14

Zitat von »Saiya@HPI«


Du hast

Quellcode

1
char *str = "12text\0b555222";


und willst da jetzt

12
text
b
555
222

auslesen?

genau das!

edit:wobei die 3 ints eben nicht immer gleich groß sind!

hurra

God

Re: [c++] string anhand verschiedener größen split

Donnerstag, 4. Oktober 2007, 19:15

Das ist ein Ding der Unmöglichkeit!

Eumel

God

Re: [c++] string anhand verschiedener größen split

Donnerstag, 4. Oktober 2007, 19:16

Wenn die ints nicht mit ihren kompletten 32-Bit abgespeichert wurden, geht das nicht!

32|variabel mit '\0' am Ende|8|32|32

Die Zahlen stünden für die Bits.

MfG
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.

iNFiNiTE

God

Re: [c++] string anhand verschiedener größen split

Donnerstag, 4. Oktober 2007, 19:18

ok, hab mir schon gedacht dass die pappnasen aus meiner projektgruppe wieder mistgebaut haben ;D dann mach ich mir eben meinen eigenen string mit | als trenn zeichen, zbsp

Quellcode

1
2|blabla|x|244|6653


danke ;)
messi

Eumel

God

Re: [c++] string anhand verschiedener größen split

Donnerstag, 4. Oktober 2007, 19:22

*hehe*

Ohne Trennzeichen ginge es, aber dann läge es an reiner Bit-Interpretation und wäre viel zu Aufwändig. Mit Trennzeichen ist es deutlich einfacher (vom Auslesealgorithmus her), auch wenn der Speicherverbrauch (minimal) größer ist. ;)

Bei Bit-Interpretation würde man im String übrigens nicht die Zahlen erkennen können. ;)

MfG
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.

r1ppch3n

Moderator

Re: [c++] string anhand verschiedener größen split

Donnerstag, 4. Oktober 2007, 19:33

ich würd dann evtl n anderes trennzeichen verwenden, nicht dass mal ein | im string landet und das programm durcheinander kommt ;)

splitten kannst den mist dann zb mit strtok()

allerdings frag ich mich ob das überhaupt so die gute lösung ist, in den meisten fällen gibts doch deutlich elegantere möglichkeiten zur datenübergabe

iNFiNiTE

God

Re: [c++] string anhand verschiedener größen split

Donnerstag, 4. Oktober 2007, 19:36

naja, wir nutzen die borland eigenen socket controlls zum senden von daten übers netzwerk und diese controlls senden das ganze eben als gepanschten string. hart aber izzo ;)

Y0Gi

God

Re: [c++] string anhand verschiedener größen split

Donnerstag, 4. Oktober 2007, 20:48

Urgs, das erinnert mich an DICOM *schüttel*. Da muss man auch tausend Fälle abfangen und den ganzen Stream sukzessive abklappern, um einen bestimmten Wert zu finden.


Zitat von »r1ppch3n«

ich würd dann evtl n anderes trennzeichen verwenden, nicht dass mal ein | im string landet und das programm durcheinander kommt ;)

Das Problem besteht immer. Um das zu verhindern muss entweder der Token (Zeichen oder String, letzteres macht eine Kollision etwas unwahrscheinlicher) von vornherein verboten oder eben beim Zusammensetzen in den Eingabewerten maskiert werden.