很抱歉,如果它是重复的,我已经在SO中进行搜索,并且看到有类似的问题,但是我仍然无法调试该问题。

我正在使用stringstream进行简单调试。
我有这个宏:

#else
#include <sstream>
extern std::wstringstream trc;
#define DEBUG_MSG(x) \
    trc.str(std::wstring());\
    trc<<x;\
    OutputDebugString(trc.str().c_str())
#endif

当我像
DEBUG_MSG("IPCFacilities: InsertCtrlMessage: write." <<" Time: "<<GetTickCount64()<<std::endl);

在DebugView中,我得到:
IPCFacilities: InsertCtrlMessage: write. Time: 265793562
IPCFacilities: InsertCtrlMessage: write. Time: 265793562

(输出打印两次)

我做错了什么?

最佳答案

这只是一个种族问题。

如果代码是这样交错的:

thread 1: trc.str(std::wstring());
thread 2: trc.str(std::wstring());
thread 1: trc<<x;
thread 1: OutputDebugString(trc.str().c_str());
thread 2: trc<<x;
thread 2: OutputDebugString(trc.str().c_str());

输出似乎打印两次,但不是。这只是我代码中的错误。像往常一样,宏对这种情况不利,这一次我学到了这一课。感谢您的参与。

关于c++ - 来自stringstream的重复输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23491431/

10-11 15:53