Les entrées / sorties se font en C++ à l'aide des flots (stream). Ces flots peuvent être reliés à l'écran, au clavier, à des fichiers, ou encore à des chaînes de caractères. L'avantage des flots sur les fonctions d'entrées / sorties classiques du C réside dans leur plus grande facilité d'emploi et surtout dans le fait que les opérateurs qui les manipulent peuvent être redéfinis pour de nouveaux types créés par l'utilisateur.
Les flots sont des objets de deux classes
Une troisième classe iostream hérite du comportement de ces deux classes et permet donc la création de flots pouvant aussi bien servir à l'entrée qu'à la sortie de données.
Les flots par défaut sont cin pour le flot d'entrée standard, cout pour le flot de sortie standard et cerr pour le flot de sortie d'erreurs. Les opérateurs sur les flots les plus importants sont : << pour la mise en place d'un objet dans le flot et >> pour obtenir un objet d'un flot. Il est de plus possible de relier un flot à un fichier (fstream) ou à une chaîne de caractères (strstream).
Les flots peuvent être testés afin de déterminer s'ils sont valides ou non. Le principal cas d'invalidité est la tentative de lire un objet d'un mauvais type comme par exemple un float alors qu'un char est attendu.