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
es heist auch string.h ABER in C sind strings arrays aus chars, also is da nix mit umwandeln.
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++
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 ;-)
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.
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.
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.