Quote:
Originally Posted by Fawkess123
Jetzt mal leicht gesagt du kennst doch sicherlich die c strings : char Array[20]
Nun du hast bei der Variable jetzt 21 Charackter zur verfügen weil Der Computer bei der 0 anfängt zu zählen gut. Nun willst aber nicht alle 21 Charackter benuzen sondern nur 4 dann wird nach dem Array[3] alle restlichen Werte auf Null gesetzt also Array[4] bis Array[20] = 0; Das nennt sich Zero terminated. ( Habe es jetzt nur im Kopf wie ich es damals gelernt habe ).
|
Was? Wenn du ein Array mit 20 Elementen allokierst, dann erhälst du auch nur ein Array mit 20 Elementen. C-Strings sind hier keine Ausnahme. Des weiteren musst du nicht den gesamten nicht benötigten Teil des C-Strings mit Nullen füllen, um ihn zu kürzen.
Code:
char* foo = "Hello World"; //C-String mit 12 Elementen
char bar[] = "123"; //ist das gleiche wie:
char _bar[4] = "123";
//char meow[2] = "12"; //Das hier geht erst gar nicht
Die Null gehört zum String, du musst sie jedoch nur nicht selber hinschreiben, sprich der Compiler verlängert dir nicht das Array.
Quote:
Originally Posted by Fawkess123
Und anscheinend nimmt system() keine STRINGS an sonder nur char Arrays das machst du mit .c_str es in einen C(char) str(string) auch (array) gennant umwandeln.
|
c_str() wandelt den string nicht um, es gibt einen konstanten Pointer auf das zugrundeliegende Char-Array zurück. Intern ist std::string nämlich auch nur ein Char-Array.