Compilerfehler: Zu viele Initialisierungen!!!
-
Hallo,
ich habe ein Array:const char chars[] = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "\196", "\214", "\220", "\223", "?", ".", "(", ")", "=", "\0"};Mein Compiler melden folgenden Fehler:
Zu viele InitialisierungenWenn ich aber das Array auf std::string umstelle:
const std::string chars[] = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "\196", "\214", "\220", "\223", "?", ".", "(", ")", "=", "\0"};funktionierts...
Könntet ihr mir erklären warum?
Danke im voraus.
Gruß Speedy_92
-
const char* chars = {'A', 'B', [...]};
-
Ein char-Array kannst du entweder durch Aufzählung von Zeichenliteralen (begrenzt durch: ' ) initialisieren oder durch ein einzelnes Stringliteral (begrenzt durch: " - die geschweiften Klammern dürfen dann entfallen). Da deine Literale Stringliterale sind, sind alle bis auf das erste überzählig.
const char chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\196\214\220\223?.()=";
-
statt " musst du ' benutzen
const char chars[] = {'A', 'B', ...
-
Vielen Dank.
Hatte vollkommen vergessen das chars ja mit ' eingeschlossen werden
Aber eine Frage: Wieso muss ich einen Pointer benutzen???
-
du musst nicht... kannst aber:
aus:
const char chars[] = {'A', 'B', ...mach:
const char *chars = "ABCDEFGH...";letzteres hat de vorteil dass du nicht so viel schreibarbeit mit den vielen ' hast
und dass du trtzdem wie gewohnt auf chars[i] zugreifen kannst,
da *(chars + i) = chars[i] entspricht.
-
Quellcode schrieb:
du musst nicht... kannst aber:
aus:
const char chars[] = {'A', 'B', ...mach:
const char *chars = "ABCDEFGH...";letzteres hat de vorteil dass du nicht so viel schreibarbeit mit den vielen ' hast
und dass du trtzdem wie gewohnt auf chars[i] zugreifen kannst,
da *(chars + i) = chars[i] entspricht.Er kann genausogut ein Array machen
const char *a = "ABCDEFGH..."; const char b[] = "ABCDEFGH..."; // geht genausoIn beiden Fällen wird ein '\0' angehängt. sizeof(a) ist allerdings sizeof(char*), sizeof(b) wird dagegen (strlen(a) + 1) sein.
-
ja verzeihung...
wollte mich nicht gleich als char* fan outen...
konnte ja kann keiner ahnen, dass du der radikalen char[]-Partei angehörst
-
Quellcode schrieb:
ja verzeihung...
wollte mich nicht gleich als char* fan outen...
konnte ja kann keiner ahnen, dass du der radikalen char[]-Partei angehörstDen Streit hat man mit
std::stringnicht
-
stimmt
