Я хотел бы использовать эти STL-функции в своем коде, но так много раз, что их присутствие делает читабельность кода громоздкой. Есть ли способ определить псевдонимы для этих команд?
Как использовать более короткое имя для `setw`, `setprecision`, `left`, `right`, `fixed` и `scentific`?
Ответы (1)
iomanipulators - это функции, и для большинства из них вы можете легко получить указатель на функцию (на самом деле я не проверял, но, например, наличие нескольких перегрузок или шаблонов функций сделало бы это менее простым):
#include <iostream>
#include <iomanip>
int main(){
auto confu = std::setw;
auto sing = std::setprecision;
std::cout << confu(42) << sing(3) << 42;
}
Не могу не упомянуть, что ваша мотивация весьма сомнительна. Программисты на C++ знают вещи из стандартной библиотеки. Они не знают ваших псевдонимов. Следовательно, для всех, кроме вас, читабельность будет снижена, а не улучшена. Если у вас сложное форматирование, вы можете обернуть печать в функцию:
my_fancy_print(42);
Читатели кода C++ привыкли к функциям, они знают, где искать их реализацию, и my_fancy_print(42)
не сбивает с толку, а std::cout << confu(42) << sing(3) << 42;
вызывает удивление: мне пришлось бы поискать определение confu
и sing
, чтобы понять, что это просто псевдонимы. для чего-то, что можно было бы использовать напрямую.
std::cout << w(10) << p(4) << l
? - person Caleth   schedule 28.05.2021setw
,setprecision
и т. д.), делает код нечитаемым, а не читабельным. Однако вопрос сводится к тому, как получить псевдоним для iomanipulators? и нам не нужно вводить удобочитаемость, основанную на мнении, чтобы ответить на этот вопрос. - person 463035818_is_not_a_number   schedule 28.05.2021w
илиs
. - person Sam Varshavchik   schedule 28.05.2021std::format
. . Если вы не используете C++20, посмотрите, есть лиstd::printf
будет работать или искать какую-нибудь библиотеку форматирования. - person mediocrevegetable1   schedule 28.05.2021