Dann machst du irgendwas falsch, gehen müssten sie alle.
"
std::string" ist ein Datentyp aus der STL für weitere Informationen siehe hier:
http://en.cppreference.com/w/cpp/string/basic_string
Ausgehend von deiner Grundfragestellung gehe ich mal davon aus, das du noch nicht viel Erfahrung mit C++ gesammelt hast.
Bevor du "
std::string" wirklich verstehen kannst, musst du also möglicherweise noch mehr Erfahrung mit C++ sammeln. Solange musst du dich mehr oder weniger damit zurechtfinden das es so ist wie es ist.
Das "Problem" an einem String ist, das er eine beliebige Länge haben kann. Ein Zeichen, zwei Zeichen, tausend Zeichen oder mehrere Millionen. Das unterscheidet ihm von den anderen Typen die du bisher wahrscheinlich kennen gelernt hast. Mit Visual Studio 32 Bit Build zb: "char" ≙ 1 Byte, "int" ≙ 4 Bytes, "char const*" ≙ 4 Bytes"...
Ein String hingegen lässt sich eben keine feste Größe zuordnen, was ihn technisch wesentlich komplizierter macht.
Es gibt daher prinzipiell mehrere Möglichkeiten einen String zu repräsentieren. Wenn du einen normalen festen String zb "Berg" verwendest, wird die Bytefolge des Textes irgendwo in der Exe hinterlegt und du arbeitest normalerweise immer mit einen Zeiger auf diese Stelle in der Exe. (Vereinfacht gesagt) Ein normaler String ist also nicht mehr als ein Zeiger. Die einfachste Möglichkeit einen statischen String zu verwenden ist also nicht die Stringdaten selbst zu kopieren oder rumzuschieben, sondern nur den Zeiger auf die Daten die fest in der Exe stehen. Das entspricht der Lösung die DeKugelschieber und ich vorgeschlagen haben.
Sobald du den String allerdings nicht bloß fest speichern wolltest, sondern auch seinen Inhalt verändern, müssen die Stringdaten natürlich kopiert werden. Die "festen Bytes" in der Exe können nicht verändert werden und sind vom Betriebssystem geschützt.
Eine theoretische Möglichkeit wäre es, ein eigenes Array von Zeichen anzulegen und von Hand zu kopieren.
Um die Daten jetzt zu kopieren, müsste jedes einzelne Zeichen kopiert werden. Wie du schon wissen solltest, sind auch das feste Array(zb. deines im initialen Beispiel) aber mehr oder weniger auch nur Zeiger. Mit einem "=" würde also versucht werden einen Zeiger zuzuweisen was natürlich nicht geht und auch keinen Sinn machen würde. Um jetzt das zu machen was du wirklich willst, nämlich jedes einzellne Zeichen kopieren, gibt es bereits eine fertige Funktion die "
strcpy" heißt. Damit kannst du den String in dein Array kopieren.
Das Problem:
Die Länge ist begrenzt. Zb. in deinem anfänglichen Beispiel auf 30 Zeichen. Außerdem kann die Verwendung bei komplexeren Aufgabenstellungen auch recht unhandlich werden. Beides ist in der Regel nicht erwünscht, deshalb hat man in C++ in der STL "
std::string" erfunden, das das alles für dich im Hintergrund macht und verwaltet.