Go Down

Topic: String zu Int (Read 1 time) previous topic - next topic

Hallo zusammen,

Ich versuche krampfhaft einen String in eine Int Variable zu verschieben.
Komme dabei allerdings nicht weiter.
Kann mir jemand einen Denkanstoß / Befehl geben?

Möglicher Code
Code: [Select]

String Zahl="101";
int Nummer = parseInt(Zahl);  //könnte so aussehen , funktioniert aber nicht.
Serial.println(Nummer);

Joghurt


Code: [Select]

String Zahl="101";
int Nummer = atoi(Zahl);
Serial.println(Nummer);


Fehlermeldung:
Webserver_test.cpp: In function 'void loop()':
Webserver_test:97: error: cannot convert 'String' to 'const char*' for argument '1' to 'int atoi(const char*)'

Joghurt

Hmm, ok. Muss es denn unbedingt ein String sein...?

Nicht unbedingt.
Vorrausgehend siehts so aus.

Code: [Select]

char var[4];
var[1]=49;  //1
var[2]=48;  //0
var[3]=49;  //1


Habe quasi aus den 3 chars einen String gebastelt in dem guten Glauben, dass ich aus dem String leichter wieder eine vollständige Dezimal-Zahl basteln könnte.

Joghurt

Probier da mal atoi(var); ;)

MaFu

Aber füll das Array so:
Code: [Select]
char var[4];
var[0]=49;  //1
var[1]=48;  //0
var[2]=49;  //1
var[3]=0;
int i=atoi(var);


C Strings beginnen mit dem Nullten Element und benötigen ein Nullbyte als Abschluss. Sonst kann es die niedlichsten Seiteneffekte geben  ]:D
_______
Manfred

mkl0815

Ein einfaches
Code: [Select]
char *string = "101";
hilft da auch schon.
Leider hat die String-Klasse keine Methode, um direkt die Adresse des internen Buffers zu bekommen. Das wäre für einige Sachen eine Erleichterung. Es würde ja ein "const char*" reichen, damit keiner von extern im Buffer rumrühert.

Joghurt


C Strings beginnen mit dem Nullten Element


Ups, übersehen... :D

voithian

#9
Mar 06, 2012, 02:54 pm Last Edit: Mar 06, 2012, 03:14 pm by voithian Reason: 1
Hallo,
ich kann's im Augenblick nicht ausprobieren, aber vielleicht geht es so:

Code: [Select]

char puffer[50];   // genügend gross
String s = "101";

// Angaben für Version 0022, Version 1.0 sieht ein wenig anders aus
// wie der Name sagt...
s.toCharArray(puffer, sizeof puffer);

int i = atoi(puffer);
Serial.println(i);

// oder mit toInt() vielleicht einfacher so...

// toInt() anwenden auf eine Instanz eines String-Objektes
long l = s.toInt();    // liefert einen long-Wert zurück (trotz des Namens!)
Serial.println(l);


Neugierige schauen in WString.h / WString.cpp nach ;)

@mkl0815: toInt() greift übrigens direkt auf den internen Puffer des Objektes zu und ruft damit lediglich atol() auf.

Wolfgang

Vielen Dank!

atoi(); lies keinen char in int ohne eine üble Fehlermeldung convertieren.

Aber toInt(); war die Lösung für all meine Probleme!

Danke nochmal :)

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy