C++ 使用效应器或操纵器反转流的一部分(标记之间)
你好 我想制作一个小程序,使用流效应器和/或操纵器在标记之间反转流的一部分,例如: 由此:C++ 使用效应器或操纵器反转流的一部分(标记之间),c++,stream,C++,Stream,你好 我想制作一个小程序,使用流效应器和/或操纵器在标记之间反转流的一部分,例如: 由此: cout你不是这样要求的,但我会用另一种方式处理这个问题。与其为流编写某种扩展,为什么不编写一个反转字符串的函数呢 #include <string> #include <iostream> using namespace std; string reverse(const string& str) { return string(str.rbegin(), st
cout你不是这样要求的,但我会用另一种方式处理这个问题。与其为流编写某种扩展,为什么不编写一个反转字符串的函数呢
#include <string>
#include <iostream>
using namespace std;
string reverse(const string& str)
{
return string(str.rbegin(), str.rend());
}
int main()
{
cout << reverse("asdf") << "\n";
}
#包括
#包括
使用名称空间std;
字符串反转(常量字符串和str)
{
返回字符串(str.rbegin(),str.rend());
}
int main()
{
cout你可以这样做,但它像屁股一样难看:
class revstream: public std::ostream
{
public:
static std::ostream &start(std::ostream &os)
{
return *(new revstream(os));
}
static std::ostream &end(std::ostream &rev)
{
revstream *actual_rev= dynamic_cast<revstream *>(&rev);
// logic for reversing output goes here
std::ostream &result= actual_rev->os;
delete actual_rev;
return result;
}
revstream(std::ostream &in_os): std::ostream(&reversebuf), os(in_os)
{
return;
}
std::ostream &os;
std::stringbuf reversebuf;
};
class revstream:public std::ostream
{
公众:
静态std::ostream&start(std::ostream&os)
{
返回*(新的revstream(os));
}
静态标准::ostream和end(标准::ostream和rev)
{
revstream*实际版本=动态版本(&rev);
//反转输出的逻辑在这里
std::ostream&result=实际版本->操作系统;
删除实际版本;
返回结果;
}
revstream(标准::ostream和in_os):标准::ostream(和reversebuf),os(in_os)
{
回来
}
std::ostream&os;
std::stringbuf reversebuf;
};
您的ostream操纵器必须返回对ostream
的引用,因此您必须在revstream::start
中进行分配
class revstream: public std::ostream
{
public:
static std::ostream &start(std::ostream &os)
{
return *(new revstream(os));
}
static std::ostream &end(std::ostream &rev)
{
revstream *actual_rev= dynamic_cast<revstream *>(&rev);
// logic for reversing output goes here
std::ostream &result= actual_rev->os;
delete actual_rev;
return result;
}
revstream(std::ostream &in_os): std::ostream(&reversebuf), os(in_os)
{
return;
}
std::ostream &os;
std::stringbuf reversebuf;
};