Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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);

...

Geschrieben

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]

Geschrieben

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.

Geschrieben

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?

Geschrieben

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

Geschrieben

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

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...