Ich bin ein C++ Anfänger, also tut mir leid, wenn die Frage zu einfach ist.C++ leer String Konstruktor
Ich habe versucht, die String-Konstrukteure zu sammeln und alle auszuprobieren (um sie zu erinnern).
string strA(); // string(); empty string // incorrect
string strB("Hello"); // string(const char* str)
string strC("Hello",3); // string(const char* str, size_type length)
string strD(2,'c'); // string(size_type lenght, const char &c)
string strE(strB); // string(const string& s)
cout << strA << endl;
cout << strB << endl;
cout << strC << endl;
cout << strD << endl;
cout << strE << endl;
Alle von ihnen arbeitet mit Ausnahme der strA. Es druckt "1". Warum? Was ist der Typ des strA in diesem Fall? Wie kann ich die Art des Materials überprüfen, wenn ich unsicher bin?
ich, dass der richtige Weg bemerkt haben, ist dies (die übrigens mit den anderen Konstrukteuren als unvereinbar scheint, manchmal manchmal keine Pars parens):
string strA;
ps: Frage in fett, gewöhnlich irrelevant Antworten werden abgelehnt.
Und das ist ein Grund, warum ich aufgehört habe C++ zu benutzen. –
@Dietrich Epp: Das hat mich auch gestört. Ich denke, das ist der Preis, der gezahlt wird, um die Kompatibilität mit C zu wahren. Die Alternative, C zu verwenden, die ihre metrische Tonne von Problemen hat, ist meine Vermutung, dass es besser ist, C++ zu behalten und diesen Fallstrick zu vermeiden. – paercebal
Wie wäre es mit 'std :: string strA (" ");' – CaptainDaVinci