我会做这种方式:
#include <iostream>
#include <string>
#include <utility>
#include <iterator>
template<class Iter, class OutIter>
OutIter remove_escaped_numbers(Iter first, Iter last, OutIter out) {
for (; first != last ;)
{
auto c = *first++;
if (c == '^' && first != last)
{
c = *first++;
if (std::isdigit(c))
continue;
else {
*out++ = '^';
*out++ = c;
}
}
else {
*out++ = c;
}
}
return out;
}
int main()
{
using namespace std::literals;
auto input = "^1ghhu^7dndn^g"s;
auto output = std::string{};
remove_escaped_numbers(input.begin(), input.end(), std::back_inserter(output));
std::cout << output << std::endl;
}
或者这样说:
#include <iostream>
#include <regex>
int main()
{
using namespace std::literals;
auto input = "^1ghhu^7dndn^g"s;
static const auto repl = std::regex { R"___(\^\d)___" };
auto output = std::regex_replace(input, repl, "");
std::cout << output << std::endl;
}
您需要尝试自己解决问题。否则,你不会得到很好的回应,它将被视为一项家庭作业,并且你正试图作弊。你在错误的网站,如果你没有代码和erros,这将得到downvoted –
它不是一个家庭作业,我可以提供我试过的编码,但我不知道为什么我应该发布它,如果它不工作,我不dont得到任何错误,因为我不知道如何实现,我试着没有给出错误,所以IDC – SyxDuLappen
只要发布它,并提及它作为你的尝试,这会让你更好的回应。我会帮你解决问题 –