也许我错过了什么,但我无法弄清楚为什么Visual Studio 2008没有看到rdbuf()程序。这是我的代码:
16. #include "DebugBuffer/BufferedStringBuf.h"
17.
18. BufferedStringBuf debug_buffer(256);
19. std::cout.rdbuf(&debug_buffer);
BufferedStringBuf类来自此页面:http://www.devmaster.net/forums/showthread.php?t=7037
产生以下错误:
...src\main.cpp(19) : error C2143: syntax error : missing ';' before '.'
我想要做的就是使用OutputDebugString()将std :: cout重定向到Visual Studio Output窗口。
答案 0 :(得分:4)
不允许在文件级范围内拥有可执行语句。您可以声明变量,但不能将函数作为独立语句调用。将您的代码移动到一个函数中(例如gf's answer演示),您应该没有问题。
答案 1 :(得分:1)
使用该网站上给出的示例类我没有任何问题:
#include <iostream>
#include "DebugBuffer/BufferedStringBuf.h"
class DbgBuf : public BufferedStringBuf {
public:
DbgBuf() : BufferedStringBuf(255) {}
virtual void writeString(const std::string &str) {}
};
int main()
{
DbgBuf debug_buffer;
std::cout.rdbuf(&debug_buffer);
}
请注意,您必须创建一个派生自BufferedStringBuf
的类的实例,因为BufferedStringBuf::writeString()
是纯虚拟的,因此使其成为抽象类 - 无法实例化抽象类。