Forum: Mikrocontroller und Digitale Elektronik char - Array to String


von Max1989 (Gast)


Lesenswert?

Hallo,

wie kann man in C ein char - Array in einen String umwandeln?


std::string tstr = charArray;

Mit dieser Funktionion tut sich nichts, der Compiler gibt lediglich 
einen Fehler aus. --> #include <string> ... string: no such file or 
directory

Wäre echt toll wenn mir jemand helfen könnte, danke =)

MfG Max

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

es heist auch string.h

ABER
in C sind strings arrays aus chars, also is da nix mit umwandeln.

von Schiko (Gast)


Lesenswert?

Max1989 schrieb:
> Hallo,
>
> wie kann man in C ein char - Array in einen String umwandeln?
>
>
> std::string tstr = charArray;
>
> Mit dieser Funktionion tut sich nichts, der Compiler gibt lediglich
> einen Fehler aus. --> #include <string> ... string: no such file or
> directory
>
> Wäre echt toll wenn mir jemand helfen könnte, danke =)
>
> MfG Max

Du musst Dir erst mal klar werden über den Unterschied von
C und C++

von AnAlphabet (Gast)


Lesenswert?

Schiko schrieb:
> Du musst Dir erst mal klar werden über den Unterschied von
> C und C++

Nur weil der erste Buchstabe des Namens der beiden Sprachen gleich ist, 
sind sie noch lange nicht gleich ;-)

von Klaus W. (mfgkw)


Lesenswert?

COBOL?

von Klaus W. (mfgkw)


Lesenswert?

Max1989 schrieb:
> #include <string> ... string: no such file or
> directory

Auf PCs geht das, nicht aber auf einem AVR - falls du damit arbeitest.
Dort ist zwar die Sprache C++ im Wesentlichen implementiert, aber nicht 
die Standard-Library. Das macht bei sehr kleinen Rechnern auch kaum 
Sinn.

von Christoph a. (chrichri)


Lesenswert?

Ein String ist ein array aus chars mit einer abschließenden NULL (0x00).

char str[10] = "abcde"; (syntax vielleicht falsch ... ich vertu mich da 
auswendig oft)
ergibt ein "array" mit {'a','b','c','d','e','0x00','?','?','?','?'}

? ist unedefiniert... also was auch immer im speicher steht.

Wenn du str nun als string behandelst ist die NULL zwingend. Wenn die 
nicht da ist gibts Fehler.

An sich ist selbst die Aussage "array" falsch denn ein array (und 
string) ist ein pointer auf das erste element des arrays/strings. was du 
dann damit machst ist dein bier. Du kannst auch auch str[11] zugreifen, 
was da ist ist aber undefiniert.

von Max1989 (Gast)


Lesenswert?

Klaus Wachtler schrieb:
> Auf PCs geht das, nicht aber auf einem AVR - falls du damit arbeitest.

Verwende einen AVR, wie muss ich das nun anschreiben?

string tstr = charArray[];

so ws auch nicht?

von Karl H. (kbuchegg)


Lesenswert?

Max1989 schrieb:
> Klaus Wachtler schrieb:
>> Auf PCs geht das, nicht aber auf einem AVR - falls du damit arbeitest.
>
> Verwende einen AVR, wie muss ich das nun anschreiben?

Gar nicht
* das ist nicht C sondern C++
* mit der C++ Implementierung hast du keine String Klasse verfügbar.

Deine einzige Chance ist: C lernen und wie in C Strings gehandhabt 
werden.

von B. L. (b8limer)


Lesenswert?

Volle Zustimmung zu meinem Vorredner:

In C gibt es eigentlich schon Strings. "Das ist eine Zeichenkette" ist 
ein durchaus korrekter String in C. Nur leider machen kann man damit 
garnichts.

Damit man was machen kann, bastelt sich was zusammen, indem man ein 
Char-Array verwendet. Auf dem Array kann man dann bestimmte Operationen 
anwenden (Substring, ...).

unsigned char my_string[14]= "Test String 1"   //13 Zeichen + 1 = 14

Darauf kannst du jetzt was machen, z.B. (hier ohne zusätzliche 
String-Libs) die ersten 4 Zeichen ausgeben

for(i=0;i<5;i++) printf("%c",my_string[i]);

gibt aus: Test

Solche Zuweisungen wie du sie versuchst, das geht mit Arrays (hier 
Strings) aber garnicht. Arrays kann man (außer bei der Deklaration) nur 
immer elementeweise bearbeiten. Also immer einzelne Zellen anschauen und 
mit dieser einzigen was machen. Einen ganzen String auszuwählen geht 
nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.