为什么不打印矢量元素?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么不打印矢量元素?相关的知识,希望对你有一定的参考价值。
我有一个正则表达式函数,它解析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()<< '
';
//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;
以上是关于为什么不打印矢量元素?的主要内容,如果未能解决你的问题,请参考以下文章