SL.io: Iostream

???

SL.???: Use character-level input only when you have to; expr.low.

SL.???: When reading, always consider ill-formed input; expr.low.

SL.50: Avoid endl

Reason

The endl manipulator is mostly equivalent to '\\n' and "\\n"; as most commonly used it simply slows down output by doing redundant flush()s. This slowdown can be significant compared to printf-style output.

Example
cout << "Hello, World!" << endl;    // two output operations and a flush
cout << "hello, World!\n";          // one output operation and no flush
Note

For cin/cout (and equivalent) interaction, there is no reason to flush; that's done automatically. For writing to a file, there is rarely a need to flush.

Note

Apart from the (occasionally important) issue of performance, the choice between "\\n" and endl is almost completely aesthetic.