char - Array to String

Gast #2683077
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
Gast #2683082
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++
#2683110
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.
#2683189
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren