Как создать псевдоним для нескольких потоков? Есть ли способ создать сокращенный псевдоним для следующей строки в С++ 98? std::precision(3) << std::fixed И затем используйте псевдоним следующим образом: std::cout << alias << 3.1415926 << std::endl; Ответ 1 Стандартным способом, вероятно, будет создание настраиваемого манипулятора: std::ios_base& alias(std::ios_base& str) { str.precision(3); return std::fixed(str); } Тогда: std::cout << alias << 3.16464; См. перегрузку (9) operator<<: basic_ostream& operator<<(std::ios_base& (*func)(std::ios_base&)) Если вы хотите указать аргументы, вам нужна промежуточная структура: struct alias_t { int n; }; alias_t setalias(int n) { return {n}; } template <class CharT, class Traits> std::basic_ostream<CharT, Traits>& operator<<(std::basic_ostream<CharT, Traits>& out, const alias_t& alias) { return out << std::fixed << std::setprecision(alias.n); } // Or if you do not care about genericity: std::ostream& operator<<(std::ostream& out, const alias_t& alias) { return out << std::fixed << std::setprecision(alias.n); } Тогда: std::cout << setalias(6) << 3.16464;
Ответ 1 Стандартным способом, вероятно, будет создание настраиваемого манипулятора: std::ios_base& alias(std::ios_base& str) { str.precision(3); return std::fixed(str); } Тогда: std::cout << alias << 3.16464; См. перегрузку (9) operator<<: basic_ostream& operator<<(std::ios_base& (*func)(std::ios_base&)) Если вы хотите указать аргументы, вам нужна промежуточная структура: struct alias_t { int n; }; alias_t setalias(int n) { return {n}; } template <class CharT, class Traits> std::basic_ostream<CharT, Traits>& operator<<(std::basic_ostream<CharT, Traits>& out, const alias_t& alias) { return out << std::fixed << std::setprecision(alias.n); } // Or if you do not care about genericity: std::ostream& operator<<(std::ostream& out, const alias_t& alias) { return out << std::fixed << std::setprecision(alias.n); } Тогда: std::cout << setalias(6) << 3.16464;