为什么矢量元素不打印?

Why don't vector elements print?

本文关键字:打印 元素 为什么      更新时间:2023-10-16

i具有解析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

std::cout被缓冲,因此它与您在终端上看到的内容没有同步。在打印循环之后,尝试只需冲洗std::cout

std::cout  << std::flush;