我是C++新手。在下面的方法中,我试图打印而不返回。没关系。我需要的是我需要返回如下。 (需要用while while循环读取结果)。我知道一旦回来,我们不能回环。问题是一旦结果可用,应在每次迭代中返回结果。 (类似于其他线程运行此循环时一个线程读取结果可用)。我可以使用回调来解决它吗?如何从函数中一次又一次地在C++中返回?
list<string>MyLogRetriever::handleEventsOnEventID(std::string logType, DWORD eventID)
{
while (GetAsyncKeyState(VK_ESCAPE) != true)
{
wstring wsLogType = stringToWidestring(logType);
LPCWSTR lpcwstrLogType = wsLogType.c_str();
string string_query = "";
string_query = string_query + "*[System/EventID= " + to_string(eventID) + "]";
wstring wsCons = stringToWidestring(string_query);
LPCWSTR pwsQuery = wsCons.c_str();
getEvents(lpcwstrLogType, pwsQuery, -1);
//printResultedEvent(myLogStructures, numberOfAvailableEvents);
return returnResultedEvent(myLogStructures, numberOfAvailableEvents);
numberOfAvailableEvents = 0;
}
}
您是否真的需要一次返回一个,还是可以获得所有结果并一次返回所有结果?如果C++有生成器(比如Python和C#中的yield),第一种选择会容易得多,尽管MSVC有初始的支持,Clang正在开发它,但它还没有正式发布。 – chris
@chris我需要一次返回一个。结果一次不可用。我可以使用回调来解决它吗? – Veena
如果时间维护平衡对您来说足够好,您可以。 – chris