C++ - Wie setze ich ein Zeichen-array, um leere Räume?
Sagen, ich habe die folgende variable deklariert:
char mychararray[35];
und ich will jedes Zeichen in das array zu einem leeren Raum...
Wie kann ich das tun?
Mein Lehrer erzählte mir alles, was ich zu tun hatte war
mychararray = "";
aber das hat überhaupt nicht funktioniert...
Bin ich eine veraltete version von Visual Studio (2012), oder ist das einfach nur eine schlechte Initialisierung? Wenn es das Letzte ist, bitte erklären, wie man alle Zeichen ein Leerzeichen.
Vielen Dank im Voraus!
- mögliche Duplikate von initialize array auf 0 in C
- Die Zuweisung auf einer Zeile
char myarray[35] = "";
funktioniert. Alle Charaktere'\0'
. - Nicht wirklich. Es muss nicht "jedes Zeichen in das array ein leerer Raum".
- Ich weiß. Ich war nur darauf aus den OP ' s
= ""
war nicht nur einige schlechte Initialisierung. - Bitte klären, was eine "leere Raum" ist. Wollen Sie alle Zeichen in das array ein Leerzeichen '' (ohne abschließendes '\0'), oder wollen Sie, daß Sie alle '\0', oder etwas anderes?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie initialisieren die Art, wie Ihre Lehrer vorgeschlagen, als Sie deklarieren des Arrays:
Es wird festgelegt, dass das array eine leere Zeichenfolge.
Wenn Sie wollen, dass es eine leere Zeichenfolge später, dann kann man nur tun,
Wenn Sie wollen, dass es ein array, bestehend aus 34 Räume (35-Zeichen null-terminator), dann
char mychararray[35] = "";
ich aktualisiert meine Antwort.If there are fewer initializers than there are array elements, each element not explicitly initialized shall be zero-initialized.
Dass ist keine Initialisierung, bei der es Zuordnung. Initialisieren ein array, wenn Sie zu deklarieren, schreiben Sie:
Wenn du bereits ein array und wollen, setzen Sie ihn auf null, können Sie
std::fill
:Jedoch C-style-arrays sind nicht sehr beliebt in der modernen C++. Lieber mit
std::string
(die kann man klar mit derclear()
member-Funktion), oderstd::array<char, N>
wenn Sie die Größe bekannt sein, zur compile-Zeit.Obwohl Sie könnte verwenden
std::fill_n(array, 35, ' ')
, sind Sie wahrscheinlich besser mit einerstd::string
, der am günstigsten gelegene string-Klasse in C++. Don ' T haben zu kümmern, null-Terminierung oder nichts.std::memset
ist dein Freund.Wenn Sie möchten, initialisieren Sie das array mit allen Elementen zu
'\0'
Sie haben ein genauerer Weg durch Aggregat-Initialisierung:std::fill
ist sicherer, diememset
Funktion sollte nur verwendet werdenbytes
.char
array-spezifische Antwort. Da die byte angegeben wird, ist einechar
wörtlich, "überlauf" ist nicht eine Sorge.C++ nicht initialie
char
zu' '
(die hat den ascii-Wert 0x20, btw); in der Tat, array-Initialisierung ohne Angabe, was für die Initialisierung muss nicht unbedingt stattfinden (arrays im lokalen Bereich sind Links nicht initialisierten).