std regex_search для соответствия только текущей строке

Я использую различные регулярные выражения для анализа исходного файла C, строка за строкой. Сначала я читаю все содержимое файла в строке:

ifstream file_stream("commented.cpp",ifstream::binary);

std::string txt((std::istreambuf_iterator<char>(file_stream)),
std::istreambuf_iterator<char>());

Затем я использую набор регулярных выражений, которые следует применять непрерывно до тех пор, пока не будет найдено совпадение, здесь я приведу только одно, например:

vector<regex> rules = { regex("^//[^\n]*$") };

char * search =(char*)txt.c_str();

int position = 0, length = 0;

for (int i = 0; i < rules.size(); i++) {
  cmatch match;

  if (regex_search(search + position, match, rules[i],regex_constants::match_not_bol | regex_constants::match_not_eol)) 
  {
     position += ( match.position() + match.length() );        
  }

}

Но это не работает. Он будет соответствовать комментарию не в текущей строке, но будет искать всю строку, для первого соответствия,regex_constants::match_not_bol а такжеregex_constants::match_not_eol должен сделатьregex_search распознавать^$ только как начало / конец строки, а не конец / конец всего блока. Итак, вот мой файл:

Commented.cpp:

#include <stdio.h>
//comment

Код должен потерпеть неудачу, моя логика с этими опциями regex_search, совпадение должно завершиться неудачей, потому что он должен искать шаблон в первой строке:

#include <stdio.h>

Но вместо этого он ищет всю строку и всегда находит//comment. Мне нужна помощь, чтобы сделатьregex_search совпадать только в текущей строке. Вариантыmatch_not_bol а такжеmatch_not_eol не помогай мне. Конечно, я могу читать файл построчно в векторе, а затем выполнять сопоставление всех правил для каждой строки в векторе, но это очень медленно, я сделал это, и слишком много времени занимает разбор большого файла, такого как именно поэтому я хочу позволить регулярному выражению иметь дело с новыми строками и использовать счетчик позиционирования.

Ответы на вопрос(2)

Ваш ответ на вопрос