Sono un principiante in C++, mi dispiace se la domanda è troppo semplice.C++ empty Costruttore di stringhe
Ho cercato di raccogliere i costrutti di stringa e provarli tutti (per ricordarli).
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;
Tutti loro lavori, ad eccezione del strA. Stampa "1". Perché? In questo caso, qual è il tipo di strA? Come posso verificare il tipo di cose quando non sono sicuro?
ho notato che il modo corretto è questo (che tra l'altro sembra essere in contrasto con gli altri costruttori, talvolta parens volte senza parentesi):
string strA;
ps: domanda in grassetto solito irrilevante le risposte saranno downvoted.
E questo è uno dei motivi per cui ho smesso di usare C++. –
@Dietrich Epp: anche questo mi ha infastidito. Immagino che questo sia il prezzo pagato per mantenere la compatibilità con C. L'alternativa essendo l'uso di C, che ha i suoi problemi metrici, la mia ipotesi è che sia meglio mantenere il C++ ed evitare quella trappola. – paercebal
come su 'std :: string Stra ("");' – CaptainDaVinci