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); ...
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]
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.
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?
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?
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
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
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...
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!
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
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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden