我在某處找到了這段代碼。它在屏幕上打印「abcd」,但以一種奇怪的方式。我希望有人告訴我它是如何工作:此打印代碼如何工作?
#include <iostream>
#include <sstream>
class X
{
typedef std::istreambuf_iterator<char> Iter;
Iter it;
public:
X(std::streambuf* p) : it(p) { }
Iter begin()
{ return it; }
Iter end()
{ return Iter(); }
};
void printbuf(X x, std::ostreambuf_iterator<char> it)
{
for (auto c : x)
{
*it = c;
}
}
int main()
{
std::stringbuf buf("abcd", std::ios_base::in | std::ios_base::out);
printbuf(&buf, std::cout);
}
你能鏈接到哪裏找到它? – Borgleader
@Borgleader對不起,它沒有鏈接到這麼 –
這個你可能發現最令人困惑的部分是* both *參數傳遞給'printbuf()'的隱式構造。一個'X'由'stringbuf'地址隱式構造而成,'std :: ostreambuf_iterator <>'同樣由'std :: cout'隱式構造。克服這一點,理解變得更加簡單。 – WhozCraig