const char* buffer = "abcdef"; const char* pattern = "c"; regex_t re; cout << "headline::regcomp()" << endl; if(regcomp(&re, pattern, REG_EXTENDED|REG_NOSUB) != 0) { log("regex:", 1); } else { int pm_size = 1; regmatch_t pm;//[pm_size]; int error = regexec(&re, &buffer[0], pm_size, &pm, 0); while(!error) { cout << "pm.rm_so = " << pm.rm_so << endl; cout << "pm.rm_eo = " << pm.rm_eo << endl; cout << endl; buffer += pm.rm_eo; error = regexec(&re, buffer, pm_size, &pm, REG_NOTBOL); } int size = regerror(error, &re, 0, 0); char* ebuf = new char[size +1]; regerror(error, &re, ebuf, size); cout << ebuf << endl; delete [] ebuf; } regfree(&re);