sternchen_1709 Geschrieben 27. April 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Manfred.Becker Geschrieben 27. April 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 27. April 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sternchen_1709 Geschrieben 27. April 2005 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Manfred.Becker Geschrieben 27. April 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sternchen_1709 Geschrieben 27. April 2005 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 27. April 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Manfred.Becker Geschrieben 28. April 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sternchen_1709 Geschrieben 28. April 2005 Autor Teilen Geschrieben 28. April 2005 mensch das ist ja supi. das einfachste scheint zu klappen . danke euch allen freu! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Delryn Geschrieben 29. April 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Johannes Buchner Geschrieben 2. Mai 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.