Hi, wie kann ich z.B. in C++ drei unterschiedliche Texte in ein String unterbringen? Die größe von den jeweiligen Texten soll gleich sein. #define TEXT1 "HALLO" #define TEXT2 "DAS IST EIN TEST" #define TEXT3 "NUR SO" diese Texte sollen in ein String "text_buffer" kopiert werden, mit einer definierten Größe: char text_buffer[90]; Der Text1, Text2 und Text3 sollen jeweils 30 Characters enthalten. Zuerst Text1 dann Text2 und zum Schluss Text3 in den text_buffer kopieren. Wie könnte man so was in C / C++ realisieren???
Dir ist aber schon aufgefallen, daß die drei von Dir definierten Textkonstanten - unterschiedlich lang sind - deutlich kürzer als 30 Zeichen sind? Versuche mal genau zu beschreiben, wie der Inhalt von "text_buffer" nach einer Deiner Kopieroperationen aussehen soll. Anhand Deiner "Vorgaben" ist das ... rätselraten. Oder möchtest Du, daß mit jeweils 30 Zeichen Abstand in text_buffer die drei Stringkonstanten kopiert werden sollen? Das ginge (in C) so:
1 | memset(text_buffer, 0, 90); // Puffer definiert löschen |
2 | strcpy(text_buffer, TEXT1); |
3 | strcpy(text_buffer + 30, TEXT2); |
4 | strcpy(text_buffer + 60, TEXT3); |
Aber das wirst Du vermutlich nicht gemeint haben.
Sicher dass du den Zwischenraum nicht eher mit Leerzeichen auffüllen wolltest? So erscheint mir das ziemlich sinnlos. strcpy & Co. sind gefährlich. Wenn TEXT3 wirklich 30 Zeichen (entspricht 31 Bytes) lang ist, dann ergibt obiger Code schon einen Speicherzugriffsfehler. Oder jemand kommt irgendwann mal auf die Idee TEXT3 noch weiter zu verlängern oder zur Laufzeit zu erzeugen, und schon hast du den Salat. Ich würde mir deshalb lieber mal anschauen ob man nicht mit snprintf das Gewünschte ereichen kann, das ist sicherer, weil nie über die angegebene Länge hinaus geschrieben wird, und das Ergebnis garantiert immer Null-terminiert ist. Wenn du wirklich C++ programmieren möchtest, dann lass am besten das Gebastel mit den char-Arrays ganz sein und verwende stattdessen die String-Klasse.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.