Почему векторные элементы не печатаются? - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть функция регулярного выражения, которая анализирует URL-запрос и находит соответствие для IP-адреса и шаблона порта.Я хочу вставить эти совпадения в вектор, а затем распечатать их на экране.Размер вектора выводится на экран, но ничего не выводится на экран, когда я пытаюсь перебрать вектор и напечатать элементы.

код:

    std::vector<std::string> matchVector;
    std::smatch m;
    std::regex e ("\\/([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3})\\:?([0-9]{1,5})");
    while (std::regex_search (requestURL,m,e))
    {
        for (auto x:m)
            {
                std::stringstream ss;
                ss << x;
                std::string str = ss.str();
                matchVector.push_back(str);
                std::cout << "match " << str << " ";
            }
        std::cout << std::endl;
        requestURL = m.suffix().str();
    }
    std::cout << "print vector of size : " << matchVector.size()<< '\n';

    //this is where nothing prints to the screen
    for (int i =0; i < matchVector.size(); i++)
    {
        std::cout << matchVector[i];
    }

текущий вывод:

match /192.xxx.111.xxx:8080 match 192.xxx.111.xxx match 8080
print vector of size : 3

1 Ответ

0 голосов
/ 22 февраля 2019

std::cout буферизуется, поэтому не синхронизируется с тем, что вы видите на терминале.Попробуйте просто очистить std::cout после цикла печати:

std::cout  << std::flush;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...