Нууу... Ром, дык! Работает!
wregex reg(LR"((L"(?:\\.|[^"\\])*"))"); // extract token within L" and "
Только вот тут заткнулась напрочь
#define RESET_TEMPL L"\x1b%%-12345X@PJL JOB NAME=\"%s\"\r\n\
@PJL SET DATE=\"%s\"\r\n\
@PJL SET TIME=\"%s\"\r\n\
@PJL MAINTENANCEINIT\r\n\
@PJL EOJ"
а вот из этого
IEnumWbemClassObject* pEnumerator = NULL;
hres = pSvc->ExecQuery(
bstr_t("WQL"),
// bstr_t("SELECT * FROM Win32_OperatingSystem"),
bstr_t("SELECT * FROM Win32_PnPSignedDriver"),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator);
получилось
Добавлено через 11 минут и 13 секунд:Джон, классы символов тут не могут помочь?
"Вам-то хорошо" (с)
На такие темы рассуждать.
Я тут можно сказать только недавно узнал, что С++ поддерживает регулярки. До этого весь мой опыт ограничивался выдиранием подстрок с очень простыми кавычками. И в этот раз можно было конечно сделать простой поиск с кучей условий, но раз С++ предлагает и можно сделать в пять строчек, то почему не воспользоваться.
Весь код
wstring data(stData);
wregex reg(LR"((L"(?:\\.|[^"\\])*"))"); // extract token within L" and "
wsregex_token_iterator pos(data.cbegin(), data.cend(), reg);
wsregex_token_iterator end;
for(; pos != end; ++pos)
{
auto st = CString(pos->str().c_str());
...
}
зы Подсветку срр выключил, ибо LR"( не поддерживается.
У тебя перед завершающей кавычкой, может стоять любой символ кроме \. Это нужно описать в регексе.
Обязательно буду разбираться, спасибо за такие подсказки. Код регулярки конечно хорошо, но мне лично это мало даёт. А учить матчасть в полном объёме сейчас чисто физически нет времени.
Тем более, если не знаешь, есть она (матчасть) ваще, или нет.