很抱歉,如果它是重复的,我已经在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/