regex_replace返回错误的字符串

时间:2015-12-07 18:41:27

标签: c++ mustache

我尝试做一个小胡子渲染器:

std::string Mustache::render(const std::string& tmplt,const std::map<std::string,std::string>& context)
{
   std::string result = tmplt;
   for(std::map<std::string,std::string>::const_iterator it=context.begin(); it!=context.end(); ++it)
   {
      std::regex reg("({{"+it->first+"}})");
      result = std::regex_replace(result,reg,std::string(it->second));
   }

    return result;
}

我用以下代码测试此代码:

std::map<std::string, std::string> context;

context["test"] = "render-test";

std::cout <<  Mustache::render("It's a simple {{test}}");

但它返回

  

这是一个简单的{{test}}

而不是

  

这是一个简单的渲染测试

你看到了什么问题吗?

由于

1 个答案:

答案 0 :(得分:0)

尝试

std::cout <<  Mustache::render("It's a simple {{test}}", context);

而不是

std::cout <<  Mustache::render("It's a simple {{test}}");