Pages: [1]   Go Down
Author Topic: String zu Int  (Read 1046 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
String Zahl="101";
int Nummer = parseInt(Zahl);  //könnte so aussehen , funktioniert aber nicht.
Serial.println(Nummer);
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

atoi()
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
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*)'
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nicht unbedingt.
Vorrausgehend siehts so aus.

Code:
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.
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Probier da mal atoi(var); smiley-wink
Logged

Munich/Germany
Offline Offline
God Member
*****
Karma: 11
Posts: 643
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Aber füll das Array so:
Code:
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  smiley-twist
Logged

_______
Manfred

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ein einfaches
Code:
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.
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

C Strings beginnen mit dem Nullten Element

Ups, übersehen... smiley-grin
Logged

Neuss
Offline Offline
Full Member
***
Karma: 1
Posts: 200
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,
ich kann's im Augenblick nicht ausprobieren, aber vielleicht geht es so:

Code:
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 smiley-wink

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

Wolfgang
« Last Edit: March 06, 2012, 09:14:26 am by voithian » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley
Logged

Pages: [1]   Go Up
Jump to: