gpt4 book ai didi

c++ - 如何使用 boost::is_any_of 和 boost::replace_all_copy

转载 作者:太空狗 更新时间:2023-10-29 19:59:13 28 4
gpt4 key购买 nike

我正在尝试使用 boost::is_any_ofboost::replace_all_copy 编写一段简单的代码。片段如下:

std::string someString = "abc.def-ghi";
std::string toReplace = ".-";
std::string processedString = boost::replace_all_copy(someString, boost::is_any_of(toReplace), " ");

但是,我收到一个编译器错误,该错误太长而无法粘贴到此处。有这两个功能经验的人可以指出我的错误吗?

最佳答案

我不认为你不能。 The three parameter version of boost::replace_all_copy获取输入字符串、替换字符串和要搜索的字符串。 boost::is_any_of 返回的是谓词仿函数。

您可能想要的是 boost::replace_if :

#include <boost/algorithm/string.hpp>            // for is_any_of
#include <boost/range/algorithm/replace_if.hpp> // for replace_if
#include <string>
#include <iostream>

std::string someString = "abc.def-ghi";
std::string toReplace = ".-";
std::string processedString =
boost::replace_if(someString, boost::is_any_of(toReplace), ' ');

int main()
{
std::cout << processedString;
}

这修改了原来的,所以如果你需要保留它,你可以使用boost::replace_copy_if :

#include <boost/algorithm/string.hpp>
#include <boost/range/algorithm/replace_copy_if.hpp>
#include <string>
#include <iostream>
#include <iterator> // for back_inserter

std::string someString = "abc.def-ghi";
std::string toReplace = ".-";

int main()
{
std::string processedString;
boost::replace_copy_if(someString,
std::back_inserter(processedString), boost::is_any_of(toReplace), ' ');
std::cout << processedString;
}

希望对您有所帮助。

关于c++ - 如何使用 boost::is_any_of 和 boost::replace_all_copy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14732585/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com