This question already has answers here:
User-defined Output Stream Manipulators in C
(3个答案)
4年前关闭。
我是 C++ 新手,所以 endl 用于结束该行
我在网上的研究告诉我这是一个函数,如果是这样,为什么我们可以在不使用“();”的情况下调用它
我如何声明一个这样的函数,让我们假设我想创建一个函数,每次我要求输入时都会整理控制台
现在不必每次都像这样使用它
我希望能够将它用作
就像 endl 一样,我知道“()”并不多,这并没有真正节省大量时间,但我基本上是问这个问题来弄清楚为什么 endl 可以做到这一点。
你可以自己定义一个类似的模板:
现在,执行
将打印 foo!到标准输出。
(3个答案)
4年前关闭。
我是 C++ 新手,所以 endl 用于结束该行
cout << "Hello" << endl;
我在网上的研究告诉我这是一个函数,如果是这样,为什么我们可以在不使用“();”的情况下调用它
我如何声明一个这样的函数,让我们假设我想创建一个函数,每次我要求输入时都会整理控制台
string ain()
{
return " : ?";
}
现在不必每次都像这样使用它
cout << "Whats your name " << ain();
我希望能够将它用作
cout << "Question " << ain;
就像 endl 一样,我知道“()”并不多,这并没有真正节省大量时间,但我基本上是问这个问题来弄清楚为什么 endl 可以做到这一点。
最佳答案
根据 cppreference endl
是一个具有以下原型(prototype)的函数模板:
template< class CharT, class Traits >
std::basic_ostream<CharT, Traits>& endl( std::basic_ostream<CharT, Traits>& os );
std::ostream
的 operator<<
被重载以在看到它时调用它。你可以自己定义一个类似的模板:
template< class CharT, class Traits >
std::basic_ostream<CharT, Traits>& foo( std::basic_ostream<CharT, Traits>& os )
{
return os << "foo!";
}
现在,执行
cout << foo << endl;
将打印 foo!到标准输出。
关于c++ - endl 是什么类型的函数?我如何定义像endl这样的东西?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40122132/
10-12 14:51