Pages: [1]   Go Down
Author Topic: Doofe Frage: String to Integer  (Read 1094 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Moin,

ich habe im Netz nur Anleitungen um Chararrays nach Integer umzuwandeln. Ich möchte aber ein String zu einem Integer umwandeln.

Wie gehts?


Danke
Peter
Logged

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

Die Klasse "String" kennt die Methode "toInt". Liefert einen long-Wert zurück (auch wenn sie toInt heißt). Ruft intern atol() auf um sich auf den internen char-Puffer der String-Klasse zu stürzen.
Es lohnt sich, bei Bedarf mal in die Datei WString.h bzw. WString.cpp (irgendwo tief verborgen unterhalb des Arduino-Verzeichnisses) zu schauen. Da kann man so manches entdecken. smiley-wink

Edit: Das Thema hatten wir schon mal. Siehe auch Reply #9 in diesem Thread:
http://arduino.cc/forum/index.php/topic,95230.msg716081.html#msg716081
Da gibt's auch einen Programm-Schnipsel bezüglich der Anwendung von toInt().

Viel Erfolg
Wolfgang
« Last Edit: June 02, 2012, 02:35:45 pm by voithian » Logged

Germany
Offline Offline
Faraday Member
**
Karma: 59
Posts: 3056
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Da kann man so manches entdecken.
Man kann sehen, dass da unheimlich viel passiert ( dynamische Speicher-Verwaltung z.B., und das wo ein Arduino fast keinen RAM - Speicher hat )

Mein Vorschlag: nimm keinen String, sondern atoi ( char* ) .
Logged

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

@michael_x

Ich kämpfe auch gerade mit String und char. Hast Du Beispielseiten für deinen Tipp wo man mal sieht was wie gemacht wird?

Grüße

harding
Logged

Germany
Offline Offline
Faraday Member
**
Karma: 59
Posts: 3056
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

google: c/c++ und char[],  char* etc.

Code:
char test[]="   12345";   // Ein Text mit einer Zahl drin
char test2[80] = "77";    // In Test2 könnten dynamisch noch längere Texte gespeichert werden.
int i = atoi(test);   //  i = 12345 Die Zahl selbst
i = atoi(test2);      // i = 77
Logged

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

Code:
char test[]="   12345";   // Ein Text mit einer Zahl drin
char test2[80] = "77";    // In Test2 könnten dynamisch noch längere Texte gespeichert werden.
int i = atoi(test);   //  i = 12345 Die Zahl selbst
i = atoi(test2);      // i = 77
Wenn ich das richtig verstanden habe, sucht arduinosfish eine Umwandlung eines Strings der Arduino-Stringklasse in einen Integer und nicht die Umwandlung eines char-Arrays in einen Integer. Daher nochmal mein vorheriger Verweis auf die toInt()-Methode der String-Klasse.

Wenn er natürlich die Strings ganz wegwirft, ist das char-Array sicherlich ressourcen-sparender, aber eine String-Klasse ist in der Anwendung (meistens) deutlich komfortabler (z.B. Strings mit "=" zuweisen, statt mit strcpy() kopieren, mit "+" oder "+=" zwei Strings verbinden, statt mit strcat(), mit "==" oder "!=" auf Gleichheit testen, statt mit strcmp(), mit "<" oder oder "<" alphabetisch vergleichen, usw.).

[Edit]: Entschuldigung, ich sehe gerade, dass sich der Beitrag von michael_x an harding und nicht an arduinofish gerichtet hat und für dessen Frage sicherlich hilfreich ist.

Schönen Tag noch.
Wolfgang
« Last Edit: June 03, 2012, 04:14:05 am by voithian » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

danke. toInt hilft mir schon mal:)
Logged

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

und ich bedanke mich für das Beispiel zur Anwendung von atoi.

Viele Grüße

harding

Logged

Pages: [1]   Go Up
Jump to: