如何为 `setw`、`setprecision`、`left`、`right`、`fixed` 和 `scientific` 使用更短的名称?
How to use a shorter name for `setw`, `setprecision`, `left`, `right`, `fixed` and `scentific`?
我想在我的代码中使用这些 STL 函数,但是使用了太多次以至于它们的存在使代码的可读性变得很麻烦。有没有办法为这些命令定义“别名”?
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
的定义只是为了意识到它们只是可以直接使用的东西的别名。
我想在我的代码中使用这些 STL 函数,但是使用了太多次以至于它们的存在使代码的可读性变得很麻烦。有没有办法为这些命令定义“别名”?
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
的定义只是为了意识到它们只是可以直接使用的东西的别名。