program - visual studio hello world c++



Visual Studio: come posso vedere l'output cout in un'applicazione non console? (5)

Sembra piuttosto noioso per l'output nella finestra di debug. Dove posso trovare l'output cout se sto scrivendo un'informazione non console?

Piace:

double i = a / b;
cout << b << endl;//I want to check out whether b is zero. It seems the output cannot be found anywhere.

https://src-bin.com


Answer #1

Basta usare std :: cin.get () alla fine del tuo codice, ad esempio:

std::cout << "print this" << std::endl;
std::cin.get();

Ciò impone al programma di rimanere aperto e attendere l'input dell'utente.

Funziona comunque per me. Il merito va a TheChernoProject: https://www.youtube.com/channel/UCQ-W1KE9EYfdxhL6S4twUNw


Answer #2

Invece di usare cout, crea un file di log e scrivi tutto ciò che vuoi.

Modifica: utilizzare questo semplice codice per scrivere in un file di registro.

ofstream log;
log.open ("log.txt");
log << "Writing this to a file.\n";
log.close();

Answer #3

Mi piacerebbe dare i miei 2 centesimi.

Dato che forse è un problema di VS riguardo alla conformità con lo standard C ++ o che potremmo usare OutputDebugStringA , se non puoi modificare il tuo codice base ti potrebbe piacere l'idea di semplicemente reindirizzare lo std :: cout in qualcos'altro, come un file.

Quindi, senza modificare il tuo codice base, puoi fare qualcosa di simile a questo: Come reindirizzare cin e cout in file?

Condensato:

  • aggiungi l'include #include <fstream>
  • all'inizio della tua app, in alcuni init, prima di loggarti puoi usare:
std::ofstream out("out.txt");
std::streambuf *coutbuf = std::cout.rdbuf(); //save old buf
std::cout.rdbuf(out.rdbuf()); //redirect std::cout to out.txt!
  • alla fine della tua app / registrazione:

std :: cout.rdbuf (coutbuf); // ripristina nuovamente l'output standard

Spero che questo possa aiutare qualcuno, Kudos a Nawaz che ha fornito la risposta nell'altro thread.


Answer #4

Per inviare una stringa alla console di debug, utilizzare OutputDebugStringA . Vedi http://msdn.microsoft.com/en-us/library/windows/desktop/aa363362%28v=vs.85%29.aspx

Per inviare valori variabili alla console di debug, utilizzando std::ostringstream , inviare la stringa a OutputDebugStringA .

Dichiarazioni di output eccessive causeranno un rallentamento grave del programma. Tuttavia, è una buona tecnica per catturare le cose con cui il debugger ha un problema, come i membri del bambino reale quando giocano con i puntatori di base.


Answer #5

SOLUZIONE: questa risposta risolve la domanda e consente di reindirizzare l'output della console alla finestra di output di Visual Studio. Per prima cosa abbiamo bisogno di una classe che sovrascriva lo stream di stringa cout predefinito:

class dbg_stream_for_cout
    : public std::stringbuf
{
public:
    ~dbg_stream_for_cout() { sync(); }
    int sync()
    {
        ::OutputDebugStringA(str().c_str());
        str(std::string()); // Clear the string buffer
        return 0;
    }
};
dbg_stream_for_cout g_DebugStreamFor_cout;

Quindi, da qualche parte si desidera "attivare" la scrittura nella finestra di output VS:

std::cout.rdbuf(&g_DebugStreamFor_cout); // Redirect std::cout to OutputDebugString!




visual-studio