C++: initialisieren char-array mit einem string?
Sagen wir, ich habe einen string namens Müll.
Alles in den Müll, ich will ein char-array aus. Jedes element wäre ein Zeichen der Zeichenfolge ist.
So, der code würde etwa so Aussehen:
const int arrSize = sizeof(garbage); //garbage is a string
char arr[arrSize] = {garbage};
Aber, das gibt einen Fehler "cannot convert string to char bei der Initialisierung".
Was ist der richtige Weg, dies zu tun? Ich will einfach nur, um zu füttern das verflixte Ding ein string und ein array aus ihm heraus.
- Unter der Annahme von string, du meinst
std::string
,sizeof(garbage)
wahrscheinlich nicht tun, was Sie denken, es tut. Es gibt nur Sie die Größe einesstd::string
- Objekt, das einen compile-Zeit-Konstante, hat keine Beziehung zu der Länge der Zeichenfolge, die eine Laufzeit Wert. - Sie sind richtig, Ben. sizeof(Müll) nicht geben mir, was ich will. Guter Fang! Müll.size() ist die richtige Methode.
- Ja, aber dann
arrSize
kann nicht verwendet werden zum festlegen der Größe vonarr
würde, denn es würde nicht mehr einen compile-Zeit-Konstante.
Du musst angemeldet sein, um einen Kommentar abzugeben.
C++
std::string
unterhält eine internechar
array. Sie können es mit derc_str()
member-Funktion.Beachten Sie, dass Sie nicht ändern können das interne array ein. Wenn Sie das tun wollen, machen Sie eine Kopie des Arrays, und ändern Sie die Kopie.
myStr.size()
zurück Länge der Zeichenfolge, und Sie können Zugriff auf alle Zeichen im string an indexi
mitmyStr[i]
.Sie konnte einfach
garbage.data()
, das ist schon ein Zeiger auf das erste element eines Arrays von chars mit Ihren string-Daten.arr
ist nicht const.Oder hier ist ein schwerer Weg, das zu tun.
Ich denke was Sie suchen ist viel einfacher: