Domanda

Ho un problema davvero strano con le mie dichiarazioni Cout. L'ho provato solo con Xcode 4. Ad esempio, se scrivo,

cout << "this works" << endl;
cout << "this doesnt";
cout << memorySizeLimit << " blocks of memory available." << endl;

Vedo tutte e tre le dichiarazioni di output nella mia console di debugger. Tuttavia, se cambio l'ordine in,

cout << memorySizeLimit << " blocks of memory available." << endl;
cout << "this works" << endl;
cout << "this doesn't";

Vedo solo le prime due cout. Ancora più strano, se cambio il codice in,

cout << memorySizeLimit << " blocks of memory available." << endl;
cout << "this works" << endl;
cout << "this doesn't" << endl;

Vedo tutte e tre le dichiarazioni.

Perché non dovrei vedere che "questa non" ha dichiarato di cambiare posizione?

È stato utile?

Soluzione

std::cout è un flusso e normalmente è tamponato per le prestazioni. Se si stampi endl Il flusso viene arrossato (cout << endl equivale a cout << "\n" << flush.

È possibile scaricare manualmente il flusso cout << flush (o cout.flush()).

Quindi dovrebbe stampare:

cout << "this doesn't" << flush;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top