Jestem początkującym w C++, więc przepraszam, jeśli pytanie jest zbyt proste.C++ pusty konstruktor String
Próbowałem zebrać struny konstrctury i wypróbować je wszystkie (aby je zapamiętać).
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;
Wszystkie z nich pracuje za wyjątkiem Stra. Wyświetla "1". Dlaczego? Jaki jest w tym przypadku typ strA? Jak mogę sprawdzić typ rzeczy, gdy jestem pewien?
Zauważyłem, że poprawny sposób jest to (co swoją drogą wydaje się być niespójne z innymi konstruktorami, czasami parens czasami nie ma nawiasy):
string strA;
PS: pytanie pogrubione, zwykle bez znaczenia odpowiedzi zostaną odrzucone.
I to jest jeden z powodów, dla których przestałem używać C++. –
@Dietrich Epp: To też mi przeszkadzało. Domyślam się, że jest to cena zapłacona za utrzymanie zgodności z C. Alternatywą jest użycie C, który ma metryczny ton problemów, domyślam się, że lepiej jest zachować C++ i uniknąć tej pułapki. – paercebal
, jak o 'std :: string strA (" ");' – CaptainDaVinci