我會做這種方式:
#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
只要發佈它,並提及它作爲你的嘗試,這會讓你更好的迴應。我會幫你解決問題 –