Iostream manipulator
The catchmark is used for building labels used for input-output of vector-valued fields (see field(2)):
cin >> catchmark("f") >> fh; cout << catchmark("u") << uh << catchmark("w") << wh << catchmark("psi") << psih;
Assuming its value for output is "u", the corresponding labels will be "#u0", "#u1", "#u2", ...
class catchmark { public: catchmark(const std::string& x); const std::string& mark() const { return _mark; } friend std::istream& operator >> (std::istream& is, const catchmark& m); friend std::ostream& operator << (std::ostream& os, const catchmark& m); protected: std::string _mark; };
field(2)