当前位置: 首页 > 知识库问答 >
问题:

当然,我在boost:replace_all上做了一些非常错误的事情。请检查一下精神是否正常?

边健
2023-03-14

我想要一种有效的方法来对字符串(实际上它是一个着色器字符串)执行搜索和替换,所以我做了一些研究并提出了boost::replace_all。我的函数传递一个字符串和一个向量或一对。每对是一对字符串;搜索并替换为字符串。我想迭代这组替换,修改过程中的字符串。以下是我想出的:

void 
Shader::Read(ShaderTypes type, std::string const & shader, std::vector<std::pair<std::string, std::string>> const & replace)
{
    // Perform search and replace on input string.

    std::string newShader = shader;

    std::for_each(replace.begin(), replace.end(), [newShader](std::pair<std::string, std::string> const & pair) {
        boost::replace_all(newShader, pair.first, pair.second);
    });




    // Create and compile shader.

    Read(type, newShader);
}

现在这不会编译。我从boost那里得到了一系列错误。我认为这与配对是const有关,但我不是100%确定。当我尝试手动创建一个std::p air并用它调用replace_all时,它起作用了。不喜欢它从lambda到达的形式。

有人能帮助我吗?

共有2个答案

曾阳飙
2023-03-14

我很确定newShader应该通过引用lambda来传递。而且你不必给出它的名字,你可以用[

蒋权
2023-03-14

您应该通过引用捕获newShader

std::for_each(replace.begin(), replace.end(), [&newShader](...
 类似资料:
  • 我有这样的情况: 表一: 表二: 我需要把数量列在表2,使用“代码”作为关键字…谁能帮助我这个查询?我在用LibreOffice 预期结果

  • 所以我有一个页面对象,它处理用户所在页面的所有主要功能。当页面对象的实例被调用时,我想这样做。在当前情况下,我有: 当我调用我希望导航到该屏幕,而无需在

  • unsatisfiedDependencyException:创建文件[D:\priya\cre-audit-service\target\类\com\ads\cre\api\controller\fieldValuesController.class]中定义的名为“field valuesController”的bean时出错:通过构造函数参数1表示的不满足的依赖项;嵌套异常为org.sprin

  • 清除、清理、重新加载目标(运行平台)、刷新和重建都没有改变任何东西,所以我决定创建一个简单的OSGI插件项目,只使用一个激活器,以及一个调试配置,只使用最小的捆绑包。 激活器如下所示: 编辑:为了避免混淆,将原来的build.properties链接更改为test.cfg。 但当我启动调试器时,它将激活包,但不会显示任何日志消息。此外,调试器也不会响应我放入的断点。奇怪的是,选择'ss'显示的包比

  • 在我正在测试的页面中,可能会显示两个按钮:BASIC或Advanced。 我想知道高级按钮是否显示--如果显示,请单击它。

  • 如果不安装文本编辑程序或集成开发环境,是否有可能测试xdebug是否工作,即它是否可以调试php代码? phpinfo()中出现的唯一部分xdebug如下所示: 解析的其他. ini文件 /etc/php5/apache2/conf.d/mysql.ini, /etc/php5/apache2/conf.d/mysqli.ini, /etc/php5/apache2/conf.d/pdo.ini,