String -> Array
-
Hallo,
ich hab mal ne totale Anfängerfrage, die Suche hat nichts rausgespuckt (???).
Ich hab einen:string balla;
den ich mit cin >> balla; befülle.
Nun möchte ich aber diesen String in ein Array (char ballaaray(100)) (ich find die eckigen klammern auf diesem scheiss laptop nicht) umwandeln.Wie geht das?
Vieln dDank
-
Hallo,
Dafür ist die Funktion strncpy() oder auch strcpy() wie geschaffen (header string.h bzw. cstring).Bsp:
#include <cstring> #include <iostream> int main() { const size_t size = 20; char arr[size]; std::string s("Hallo Welt!"); // von s nach arr kopieren. strcpy(arr, s.c_str(), size); // Kontrollausgabe: std::cout << "arr = " << arr << std::endl; }Für Informationen zu strncpy() bzw. strcpy() siehe z.B. http://www.cppreference.com.
Gruß, Caipi
-
michio schrieb:
Ich hab einen:
string balla;
den ich mit cin >> balla; befülle.
Nun möchte ich aber diesen String in ein Array (char ballaaray(100)) umwandeln.1.) sollte man das nicht tun, sei doch froh, dass Du einen String hast.
2.) geht das so:
*std::copy( balla.begin(), ( balla.size() < sizeof( ballaaray )? balla.end(): balla.begin() + (sizeof( ballaaray ) - 1) ), ballaaray ) = char( 0 );Dieser furchtbare Ausdruck kommt daher, dass Du Dich nicht drauf verlassen kannst, dass balla nicht größer als 99 ist; womit wir wieder bei 1.) wären.
Gruß
Werner
-
So geht's auch, sogar ziemlich einfach:
#include <string> #include <iostream> int main() { std::string string = "Hallo!"; char cstring[50]; cstring[string.copy(cstring, sizeof(cstring) - 1)] = 0; std::cout << cstring << std::endl; }mfg.
-
Hallo,
wo besteht der Unterschied zwischen string.copy und strcpy (bzw. strncpy)
Unterschied zwischen strcpy und strncpy ist mir bewusst, aber string.copy?
Könnt ihr mich bitte aufklären?
Danke!
-
nki schrieb:
Hallo,
wo besteht der Unterschied zwischen string.copy und strcpy (bzw. strncpy)
Unterschied zwischen strcpy und strncpy ist mir bewusst, aber string.copy?
Könnt ihr mich bitte aufklären?
Danke!
http://www.cppreference.com/cppstring/copy.html
string::copy ist C++ und strcpy stammt noch von der cstdlib.
mfg.
-
Eigentlich stammt strcpy aus der cstring.
-
Braunstein schrieb:
Eigentlich stammt strcpy aus der cstring.
Hast Recht, weiß auch nicht mehr wie ich drauf gekommen bin.
mfg.