Schrijven naar standaardfout

C++:
Schrijven naar standaardfout

Hoe:

C++ gebruikt cerr voor het schrijven naar stderr. Hier is hoe je het gebruikt:

#include <iostream>

int main() {
    std::cout << "Dit is reguliere uitvoer" << std::endl;
    std::cerr << "Dit is een foutmelding" << std::endl;
    return 0;
}

Een voorbeelduitvoer zou er zo uitzien:

Dit is reguliere uitvoer
Dit is een foutmelding

Zelfs als je stdout omleidt, blijft stderr zichtbaar in de terminal:

// Leidt stdout om naar een bestand, maar stderr blijft zichtbaar in de terminal
int main() {
    freopen("uitvoer.txt", "w", stdout);
    std::cout << "Dit wordt niet weergegeven in de terminal" << std::endl;
    std::cerr << "Dit wordt wel weergegeven in de terminal" << std::endl;
    fclose(stdout);
    return 0;
}

Diepere Duik:

In UNIX-achtige systemen is stderr geïntroduceerd om programmuitvoer (stdout) te scheiden van foutmeldingen, elk met zijn eigen bestandsdescriptor (1 voor stdout, 2 voor stderr). Alternatieven voor cerr zijn het gebruik van fprintf(stderr, ...) in C of rechtstreeks schrijven naar bestandsdescriptor 2. Intern is cerr een instantie van ostream en is ongebufferd om directe foutuitvoer te garanderen zonder te wachten tot de buffer vol is.

Zie Ook: