Char to String?!

Hallo,

ich rupfe mir gerade die Haare aus.
Ich habe eine Char-Variable, die ich in einen String konvertieren möchte, um Sie einer Funktion zu übergeben - die eben einen String erwartet.

Ich habe jetzt die ersten 6 Seiten von Google durchgeklickt, bei der Suche "arduino char to string" - aber ich finde immer nur string to char.

Und nun beschleicht mich der Verdacht, dass das verdammt einfach sein muss, wenn niemand in Foren danach fragt. Aber ich komme nicht drauf - direkt zuweisen (string = char;) geht zwar, aber der String ist danach leer.

Die Char-Variable ist am Ende mit \0 terminiert.

Die Char-Variable ist am Ende mit \0 terminiert.

Das kann nicht sein. Ein char ist ein Zeichen. Ein string kann Null-terminiert sein, aber ein char ist dann schon '\0'

Poste mal einen kurzen Code-Schnippsel was du genau machen willst.

Im Prinzip kannst du sowas machen:

char c = 'a';
char test[] = { c, '\0' }

Oder:

char c = 'a';
char test[2];
test[0] = c;

Da strings char-Arrays sind.

sprintf() ist auch eine Option für kompliziertere Formatierungen.

Nachdem ich mir jetzt alle Haare ausgerissen habe, ist es tatsächlich so:

char char1[25] = "abcded...";
String string1;
string1 = char1;

Ich habe beim Debuggen etwas nicht beachtet, es funktioniert tatsächlich so.

So kann man sich auch die Zeit totschlagen.. :slight_smile:

Das ist was anderes als du geschrieben hast :slight_smile:

char1 ist kein char sondern ein string/char-Array. Und du wolltest das einem Arduino-String zuweisen. Also C-String -> String Objekt.

neovanmatix:
Hallo,

ich rupfe mir gerade die Haare aus.
Ich habe eine Char-Variable, die ich in einen String konvertieren möchte, um Sie einer Funktion zu übergeben - die eben einen String erwartet.

Ich habe jetzt die ersten 6 Seiten von Google durchgeklickt, bei der Suche "arduino char to string" - aber ich finde immer nur string to char.

Und nun beschleicht mich der Verdacht, dass das verdammt einfach sein muss, wenn niemand in Foren danach fragt.

Dass du statt char eigentlich char* oder ein char array meinst, ist ja inzwischen klar.

Ich frage mich nur, warum du überhaupt mit dem Haare raufen angefangen hast.

Das geht doch alles:

void takesString(String s) {  }

void loop() {
	char text[50] = "a sample char array";

	String s1 = "text";  // so
	String s2 = text;

	String s3(text);  // oder so
	String s4("t4");

	takesString(s1);  
	takesString("geht auch"); // oder gleich so
	takesString(text);
}

Eine Funktion die einen String- Parameter will, solltest du auch mit einem char* aufrufen können,
dann wird beim Aufruf das String - Objekt erzeugt.