C++ 如何清除std::ostream
如何清除或清空std::ostream对象 我在这里找到的例子是stringstreamC++ 如何清除std::ostream,c++,C++,如何清除或清空std::ostream对象 我在这里找到的例子是stringstream stringstream m; m.str(""); 显然,这对ostream不起作用 编辑:根据要求,对于用法: 我在一个简单的秒表中使用ostream对象。跟踪慢函数的时间。 随着时间的推移,流对象变得越来越大,应用程序变得没有响应。所以这里我试图清除ostream对象。最好是在CStopUhr的构造函数中 static tstringstream fout;
stringstream m;
m.str("");
显然,这对ostream不起作用
编辑:根据要求,对于用法:
我在一个简单的秒表中使用ostream对象。跟踪慢函数的时间。
随着时间的推移,流对象变得越来越大,应用程序变得没有响应。所以这里我试图清除ostream对象。最好是在CStopUhr的构造函数中
static tstringstream fout; // fout to stringstream
//static tofstream fout(_T("SpooferTimeTrace.log); // fout to file
static std::wostream fout(std::wcout.rdbuf()); // fout to cout
class CStopUhr
{
public:
CStopUhr(tostream& os, LPCTSTR txt = _T(" Time: "))
:_os(os)
{ _os.clear(); _txt = txt; _dwStart = GetTickCount(); }
~CStopUhr()
{ _os << _txt << (GetTickCount()-_dwStart) << _T("ms ") << std::endl; }
private:
DWORD _dwStart;
tostream& _os;
tstring _txt;
};
我看不出有什么好的理由让您这样做,但也许您可以直接干扰底层的
std::streambuf
对象,以碰撞put指针,直到缓冲区中不再有未完成的字符?清空ostream
意味着什么?你确定你指的不是istream
(比如std::cin
)?你认为空的ostream是什么样子?你到底想做什么。如果我错了,请纠正我,但不是flush()
清除输出流中剩余的任何内容有效地清除它?也许可以告诉我们您想做什么,以便我们更好地理解您的意思?
void testfunction()
{
CStopUhr suhr(fout, CString(__FUNCTION__);
:
;
}