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
 


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