Char arrays zusammenfügen
-
Hallo Leute!
Kann mir einer von euch sagen (und vielleicht auch ein Codebeispiel dafür geben), wie ich 3 char arrays zusammenfügen kann?
Mit Strings habe ich da kein Problem - doch ich habe vor, dass Ergebnis in einer MessageBox auszugeben.Beispiel:
char * ausgabe; char * text1 = "ich"; char * text2 = "heiße"; char * text3 = "marius";
Die Forensuche habe ich selbstverständlich
schon benutzt - aber jedes Thema landete früher oder später bei Strings
PS: Wie kann man eigentlich Strings in char-arrays konvertieren?
Danke euch schonmal
-
strcpy.
Oder std::string benutzen.C-Strings sind char arrays,
bei std::string ist es die Memberfunktion c_str().Devil
-
std::string x = text1 + text2 + text3;
-
Vielen Dank für eure Antworten!
Wie kann ich denn jetzt einen String in ´ner MessageBox ausgeben?
Kann ich einfach so den String einsetzen?Zum Beispiel:
std::string x = text1 + text2 + text3; MessageBox(NULL, "Test", x, MB_OK);
(Ich weiß - die Messageboxen gehören nach WinAPI - aber es geht mir ja nur um die Strings)
Vielen Dank
-
ne, du brauchst einen char*
das geht mit
x.c_str()
-
Danke! Also lautet der Code dann so:
std::string x = text1 + text2 + text3; char * ausgabe = std::x.c_str(); MessageBox(NULL, "Test", ausgabe, MB_OK);
...oder nicht?
-
Konvertierung nach char*
char *c = s.c_str();
Verkettung
Strings können mit dem Operator + verkettet werden. Dabei kann auf einer Seite des Ausdrucks auch
eine C-Zeichenkette vom Typ char* stehen.string s, s1, s2; s = s1 + s2; s = s1 + " xxx " + s2;
cu
-
Aber der von mir geschriebene Code ist doch dann richtig, oder?
-
ja schaut gut aus, test gleich mal!
cu
-
Juhu! Werde den Code gleich ´mal ausprobieren!
Wenn ich euch nicht hätteDanke
Danke
Danke
-
char * text1 = "ich"; char * text2 = "heiße"; char * text3 = "marius"; std::string x = text1 + text2 + text3; char * ausgabe = std::x.c_str(); MessageBox(NULL, "Test", ausgabe, MB_OK);
Oh Oh... das sieht gar nicht gut aus:
C:\Windows\Desktop\test\test.cpp(18) : error C2110: Zwei Zeiger koennen nicht addiert werden C:\Windows\Desktop\test\test.cpp(19) : error C2039: 'x' : Ist kein Element von 'std' C:\Windows\Desktop\test\test.cpp(19) : error C2440: 'initializing' : 'const char *' kann nicht in 'char *' konvertiert werden Durch die Konvertierung gehen Qualifizierer verloren Fehler beim Ausführen von cl.exe. test.exe - 3 Fehler, 0 Warnung(en)
Includes:
#include <string> #include <cstdlib> using namespace std;
Und ich dachte das ginge so einfach
-
mach es so:
char *text1 = "ich"; char *text2 = "heiße"; char *text3 = "marius"; string s1 = text1.c_str(); string s2 = text2.c_str(); string s3 = text3.c_str(); std::string x = s1 + s2 + s3; char *ausgabe = std::x.c_str(); MessageBox(NULL, "Test", ausgabe, MB_OK);
cu surf.
-
Das nützt immer noch nichts. Du musst den Rückgabewert von c_str() einem const char* zuweisen.
-
Hi!
Vielen Dank für die schnelle Antwort!
Leider funktioniert der Code auch nichtC:\Windows\Desktop\test\test.cpp(17) : error C2228: Der linke Teil von '.c_str' muss eine Klasse/Struktur/Union sein C:\Windows\Desktop\test\test.cpp(18) : error C2228: Der linke Teil von '.c_str' muss eine Klasse/Struktur/Union sein C:\Windows\Desktop\test\test.cpp(19) : error C2228: Der linke Teil von '.c_str' muss eine Klasse/Struktur/Union sein C:\Windows\Desktop\test\test.cpp(23) : error C2039: 'x' : Ist kein Element von 'std' C:\Windows\Desktop\test\test.cpp(23) : error C2440: 'initializing' : 'const char *' kann nicht in 'char *' konvertiert werden Durch die Konvertierung gehen Qualifizierer verloren
-
Außerdem heisst es nicht std::x.
-
OK - hab jetzt das std:: vor x.c_str(); gelöscht und char * durch const char* ersetzt. Aber der Fehler
Der linke Teil von '.c_str' muss eine Klasse/Struktur/Union sein
bleibt leider trotzdem
-
hast du <string> includet?
-
Ja, hab ich - aber ich kann ja auch mal den gesamten Code posten:
#include <windows.h> #include <string> #include <cstdlib> using namespace std; int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { char *text1 = "ich"; char *text2 = "heiße"; char *text3 = "marius"; string s1 = text1.c_str(); string s2 = text2.c_str(); string s3 = text3.c_str(); std::string x = s1 + s2 + s3; const char *ausgabe = x.c_str(); MessageBox(NULL, "Test", ausgabe, MB_OK); return 0; }
-
c_str ist eine Memberfunktion von std::string,
und nicht von char *Devil
-
Jetzt lass doch mal das dumme char* endlich weg.
string s1 = "Hallo, ihr Mongos".
Und wenn mal eine Funktion wirklich nen const char* braucht, dann übergibst du s1.c_str().