char* benutzen
-
Warum geht sowas nicht:
void foo(char* k) { k = "sdhfsdjfksdjfhkjhsdf"; } char* s; foo(s); cout << s;Und wie heißt es richtig?
-
const char*?
-
ne, bei mir ist kein const char*. Oder was meinst Du?
-
in meinen augen ist das problem, dass du eine funktionsinterne lokale kopie des cstrings modifizerst. wenn dann so: (ausser ich faile wieder lol)
typedef char const* CStr; void foo(CStr& k) { k = "..."; } CStr MyCStr s; foo(s); std::cout << s;
-
So macht man das bei char* nicht, man kann da nicht einfach strings zu weisen.
In C++ nutzt man std::string, so:
void foo(std::string& k) { k = "Ein Text"; } std::string str; foo(str); std::cout << str;Wenn man C-Strings nutzt, muss man strcpy anwenden. Bei der Initialisierung eines const strings = anzugeben ist ein Sonderfall.
-
In diesem speziellen Fall (Zeiger auf ein Stringliteral) geht das mit einem Doppelzeiger. Das ist dann aber sehr C
void foo(char **k) { *k = "sdhfsdjfksdjfhkjhsdf"; } char* s; foo(&s); cout << s;Das geht nicht mit Arrays.
-
// k ist Referenz auf Zeiger. Außerdem: Jedes Mal, wenn ein String-Literal einem // char* zugewiesen wird, tötet Algorithmos, Gott der Programmierung, ein // niedliches Kätzchen auf unnötig grausame Weise. Const! In die Dinger kann man // nicht reinschreiben. void foo(char const *&k) { k = "sdhfsdjfksdjfhkjhsdf"; } ... char const *s; foo(s); std::cout << s;