sternchen_1709 Geschrieben 27. April 2005 Geschrieben 27. April 2005 hallo an alle, hab ein kleines problem und komme einfach nicht drauf ;(! allgemein gesagt möchte ich aus einem const char* einen subtring isolieren,den ich später in eine zahl zurückkonvertieren will. "irgendeinstring" ist ursprünglich eine int-zahl gewesen, die ich in einen const char* konvertiert habe. in meinem substring möchte ich das erste zeichen weglassen und nur den rest wieder zurück in einen int-wert konvertieren. geht das? lieben gruß sternchen PSEUDO ... const char *name = irgendeinstring; const int nameLength = irgendeinstring.length(); char *subString; for(int l=1;l<nameLength;l++){ subString[l-1]=name[l]; } int a = atoi(subString); ... Zitieren
Manfred.Becker Geschrieben 27. April 2005 Geschrieben 27. April 2005 Hi sternchen_1709, dein subString ist ein char* !!!! Damit kannst du höchstens irgendwohin verweisen. Eine Zeichenkette kannst du damit nicht speichern. Wenn es lediglich um die Zeichenfolge ab dem zweiten Zeichen geht, dann darfst du einfach mit dem +Operator drauf zugreifen. Benötigst du aber wirklich eine eigene Variable, dann muss das ein char-Array sein, das mit Kopierfunktionen befüllt wird. Hier ein paar Beispiele: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> int main (void) { const char * name = "1234"; char subString[80]; printf("%d\n",atoi(name)); // Ausgabe: 1234 printf("%d\n",atoi(name+1)); // Ausgabe: 234 strcpy(subString,name+1); printf("%s\n",subString); // Ausgabe 234 strncpy(subString,name+1,2); subString[2]=0; // abschliessendes 0 printf("%s\n",subString); // Ausgabe 23 getch(); return 0; } [/PHP] Zitieren
Bubble Geschrieben 27. April 2005 Geschrieben 27. April 2005 Ja das geht, in Deinem Beispiel hast Du allerdings vergessen, dass Null-Byte zu kopieren bzw. an den verkürzten String anzufügen. Da Du nur Zeichen vom String-Anfang weglassen möchtest, wäre es geschickter einfach den Pointer auf den String um ein Zeichen zu erhöhen und so das erste Symbol beim Aufruf von atoi einfach auszulassen. Dadurch sparst Du Dir die Schleife. Zitieren
sternchen_1709 Geschrieben 27. April 2005 Autor Geschrieben 27. April 2005 das leuchtet mit leider nur teilweise ein.ich brauch ja nicht nur ne ausgabe sondern eine variable, die ich danach weiterverwenden kann. versteh ich das richtig? in diesem fall würde ich doch nur die ausgabe bekommen oder? Zitieren
Manfred.Becker Geschrieben 27. April 2005 Geschrieben 27. April 2005 das leuchtet mit leider nur teilweise ein.ich brauch ja nicht nur ne ausgabe sondern eine variable, die ich danach weiterverwenden kann. versteh ich das richtig? in diesem fall würde ich doch nur die ausgabe bekommen oder? Beziehst du dich auf mein Beispiel? Dort wird auch eine Variable (subString) verwendet. Reicht das nicht? Zitieren
sternchen_1709 Geschrieben 27. April 2005 Autor Geschrieben 27. April 2005 strcpy(subString,name+1); printf("%s\n",subString); // Ausgabe 234 int a =atoi(subString); ich hatte mich auf dein bsp bezogen. war leicht zeitversetzt . so super wie schnell ihr mir helft! danke euch beiden. habe ich das jetzt richtig verstanden und subString muss ich im nachhinein noch mit atoi bearbeiten damit es ein int-wert wird? vielen vielen dank verena Zitieren
Guybrush Threepwood Geschrieben 27. April 2005 Geschrieben 27. April 2005 habe ich das jetzt richtig verstanden und subString muss ich im nachhinein noch mit atoi bearbeiten damit es ein int-wert wird? Ja weil es sich bei substring ja um ein char Array handelt Zitieren
Manfred.Becker Geschrieben 28. April 2005 Geschrieben 28. April 2005 Hi Verena, also wenn es dir nur um den Integer-Wert geht, dann kannst du das auch direkt zuweisen (ohne subString und strcpy()): int a = atoi(name+1); Viel Spass... Zitieren
sternchen_1709 Geschrieben 28. April 2005 Autor Geschrieben 28. April 2005 mensch das ist ja supi. das einfachste scheint zu klappen . danke euch allen freu! Zitieren
Delryn Geschrieben 29. April 2005 Geschrieben 29. April 2005 Vielleicht kennst du die Klasse ja schon und willst / darfst sie nicht verwenden, falls nicht: schau dir ruhig mal dei string Klasse an. auf www.cppreference.com findest du dazu viele Erläuterungen und Beispiele, z.B. bietet die Klasse die Funktion substr() an. string text("Dies ist ein string!"); cout<<text.substr(0,4)<<endl; Viele Grüße Delryn Zitieren
Johannes Buchner Geschrieben 2. Mai 2005 Geschrieben 2. Mai 2005 Noch kürzer, falls du nur von einem int wert = 1234; die erste Zahl wegnehmen möchtest: int wert2 = wert % 1000 Kommt halt drauf an, ob deine Zahlen immer gleich lang sind, aber es gibt sicher bessere Lösungen für dein Problem als vorgeschlagen Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.