char - Array to String

Gast #2683077
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.