In C#, ich könnte dies tun:Array-Initialisierung, wenn neue
char[] a = new char[] {'a', 'a', 'a'};
Aber kann ich so etwas wie die in C++? Ich habe versucht:
char *a = new char [] {'a', 'a', 'a'};
Aber es kompiliert nicht.
In C#, ich könnte dies tun:Array-Initialisierung, wenn neue
char[] a = new char[] {'a', 'a', 'a'};
Aber kann ich so etwas wie die in C++? Ich habe versucht:
char *a = new char [] {'a', 'a', 'a'};
Aber es kompiliert nicht.
Dies ist ein Fehler in der C++ - Spezifikation (die dieses einfache Konstrukt nicht kompilieren lässt). Sie müssen die Größe liefern
char *a = new char [3] {'a', 'a', 'a'};
Siehe http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1469. Beachten Sie, dass, wenn Sie den Typnamen in Klammern geben, es eine Typ-ID und nicht eine New-Type-ID und damit syntaktisch ermöglicht es Ihnen, die Größe Ausdruck weglassen. So können Sie in der Lage sein, eine Implementierung zu finden, die Sie
char *a = new (char[]){'a', 'a', 'a'};
Althought zu sagen erlaubt ist es klar, dass es nicht die ausdrückliche Absicht, dass dies möglich ist (und einige Regeln in den new
Absätze interpretiert werden können, verbieten es).
Ich denke nicht, dass "neu" hier verwendet werden sollte. Verwenden Sie den Stapel oder einen Container. – Inverse
@inverse sollten Sie das als Frage zu der Frage hinzufügen. Ich empfehle nichts in meiner Antwort. Ich habe gerade seine Syntax festgelegt. –
Alle Antworten, die über Stack Arrays oder Vektoren sprechen, beantworten seine Frage zur Syntax von new nicht wirklich. –
Ich denke, was Sie wollen, ist dies:
const char a[] = {'a', 'a', 'a'};
, warum dies nicht nur tun? :
char a[] = {'a', 'a', 'a'};
Vermeiden Sie auch die Verwendung von Arrays vollständig. Verwenden Sie std::vector
Es wäre großartig, etwas auf Initialisierungen für 'std :: vector' hinzuzufügen, wie" Wenn Sie Glück haben, einen Compiler zu haben, der C++ 11 unterstützt, dann können Sie so und so. " –
@AntonKovalenko Ich bin nicht aktuell auf C++ 11, mein Schwerpunkt hat sich auf C# verschoben. Aber es würde mir nichts ausmachen, wenn du etwas zur Antwort hinzufügen willst :-) –
Wahrscheinlich möchten Sie kein Array in C++ verwenden. Verwenden Sie stattdessen eine std::vector
.
Sie können es sogar zu 3 'a's initialisieren.
std::vector<char> vectorOfChars(3, 'a');
Wenn Ihr Compiler C++ 11 unterstützt, können Sie sogar eine Initialisierungsliste verwenden.
Zeichenfolge a = "aaa"; a [0], a [1] ..etc Dies wird viel einfacher, wenn Sie 2-D-Arrays von Zeichenketten machen möchten ..etc
Versuchen Sie 'char a [] = {'a', 'a' , 'a'}; '. Viel einfacher! –
Geben Sie die Größe an: 'char * a = neues Zeichen [3] {'a', 'a', 'a'};' – jrok