Si consideri il seguente frammento di codice:L'assegnazione di un numero a std :: string è ora consentita?
#include <iostream>
int main() {
std::string foo;
foo = -1; // why is the compiler not complaining about this?
std::cout << "1" << std::endl;
std::cout << foo << std::endl;
std::cout << "2" << std::endl;
}
uscita effettiva (sia in modalità ideone.com C++ 14 e GCC 4.8.4):
<no output>
Domande:
- Perché lo snippet di codice è stato compilato?
- Commentando
foo = -1
, ottengo lo stdout corretto (1
e2
). Cosa ha compilato il compilatore confoo = -1;
che causa il successivocout
s fallire?
Correlati? http://stackoverflow.com/questions/32563648/stdstring-initialization-with-a-bool – CinCout
Perché non esistono costruttori che accettano numeri interi per il contenitore stringa. O fai la tua implementazione o usi numeri con stringhe. – Joel
@Joel Ma perché l'assegnazione lo accetta? –