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.