Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

...

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]

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.

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?

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?

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

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...

mensch das ist ja supi. das einfachste scheint zu klappen ;). danke euch allen :D freu!

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

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.