Why does std::getline() skip input after a formatted extraction?

Why does this happen? This has little to do with the input you provided yourself but rather with the default behavior std::getline() has. When you provided your input for the age (std::cin >> age), you not only submitted the following characters, but also an implicit newline was appended to the stream when you typed Enter: … Read more

Does the C++ standard mandate poor performance for iostreams, or am I just dealing with a poor implementation?

Not answering the specifics of your question so much as the title: the 2006 Technical Report on C++ Performance has an interesting section on IOStreams (p.68). Most relevant to your question is in Section 6.1.2 (“Execution Speed”): Since certain aspects of IOStreams processing are distributed over multiple facets, it appears that the Standard mandates an … Read more

How to properly overload the

Just telling you about one other possibility: I like using friend definitions for that: namespace Math { class Matrix { public: […] friend std::ostream& operator<< (std::ostream& stream, const Matrix& matrix) { […] } }; } The function will be automatically targeted into the surrounding namespace Math (even though its definition appears within the scope of … Read more

How do I print a double value with full precision using cout?

You can set the precision directly on std::cout and use the std::fixed format specifier. double d = 3.14159265358979; cout.precision(17); cout << “Pi: ” << fixed << d << endl; You can #include <limits> to get the maximum precision of a float or double. #include <limits> typedef std::numeric_limits< double > dbl; double d = 3.14159265358979; cout.precision(dbl::max_digits10); … Read more

‘printf’ vs. ‘cout’ in C++

I’m surprised that everyone in this question claims that std::cout is way better than printf, even if the question just asked for differences. Now, there is a difference – std::cout is C++, and printf is C (however, you can use it in C++, just like almost anything else from C). Now, I’ll be honest here; … Read more