我想使用regex_replace,就像使用string/c-string(3)版本链接到此处的示例一样:http://www.cplusplus.com/reference/regex/regex_replace/
问题是我不了解模板和正则表达式类,以便在每个示例中使用regex_replace,但是使用宽字符串.我看到了wregex,但我没有看到我如何使用它.
我的想法是取一个字符串regex_ {13E008E3-EEE7-4AC3-B9F1-E353DB67EDFD}并将其转换为status_ {13E008E3-EEE7-4AC3-B9F1-E353DB67EDFD}
wstring statusDataName;
wstring key = wstring(L"regex_");
wstring repl = wstring(L"status_");
TCHAR dataName[MAX_STR] = {0};
statusDataName = regex_replace(wstring(dataName), key, repl);
Run Code Online (Sandbox Code Playgroud)
错误C2784:'std :: basic_string <_Elem,std :: char_traits <_Elem>,std :: allocator <_Other >> std :: regex_replace(const _Elem*,const std :: basic_regex <_Elem,_RxTraits>&,const _Elem*,std :: regex_constants :: match_flag_type)':无法从'std :: basic_string,std :: allocator>中推断'const _Elem*'的模板参数错误C2784:'std :: basic_string <_Elem,std :: char_traits <_Elem>,std :: allocator <_Other >> std :: regex_replace(const _Elem*,const std :: basic_regex <_Elem,_RxTraits>&,const std :: basic_string <_Elem,_Traits1,_Alloc1>&,std: :regex_constants :: …
程序思想是在线程过程 Setxxx() 中运行一个循环,并在循环结束时等待一个事件。一旦事件触发,循环就会恢复。
这个 Setxxx() 函数在一个类中,它的调用者创建事件、线程并将事件传递给类构造函数。
我想如果我传入一个指向 HANDLE 的指针,我可以调用 ResetEvent 来解除对线程的阻塞。但问题是 WaitForSingleObjectEx 函数返回没有等待。它的返回码是 6 (DWORD) 无效句柄。
如何传入句柄,以便我可以通过使用 ResetEvent 解除阻塞来控制线程?
// header file
class CPropertyMarker {
public:
CPropertyMarker(HANDLE **hThreadSignalEvent);
void Setxxx();
private:
bool m_Run;
HANDLE* m_hThreadSignalEvent;
};
// class file
CPropertyMarker::CPropertyMarker(HANDLE **hThreadSignalEvent) {
m_hThreadSignalEvent = *hThreadSignalEvent;
}
void CPropertyMarker::Setxxx() {
DWORD retVal = 0;
while(m_Run) {
try {
// statements snipped
}
catch(exception){}
ResetEvent(m_hThreadSignalEvent);
WaitForSingleObjectEx(&m_hThreadSignalEvent, INFINITE, false);
}
}
// caller
m_hEventMainThread = (HANDLE*)CreateEvent(NULL, true, true, L"xxx-adsfsdfblah_yyy");
m_PropMarker = new CPropertyMarker(&m_hEventMainThread); …Run Code Online (Sandbox Code Playgroud)