Go Down

Topic: Doofe Frage: String to Integer (Read 1 time) previous topic - next topic

arduinofish

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

voithian

#1
Jun 02, 2012, 03:50 pm Last Edit: Jun 02, 2012, 09:35 pm by voithian Reason: 1
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. ;)

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

michael_x

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

harding

@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

michael_x

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

Code: [Select]
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

voithian

#5
Jun 03, 2012, 10:51 am Last Edit: Jun 03, 2012, 11:14 am by voithian Reason: 1

Code: [Select]
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

arduinofish

danke. toInt hilft mir schon mal:)

harding

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

Viele Grüße

harding


Go Up