删除std :: string中的字符从"("到")"删除?

JAN*_*JAN 4 c++ string std erase

我想删除我的字符串的子字符串,它看起来像这样:

At(Robot,Room3)
Run Code Online (Sandbox Code Playgroud)

要么

SwitchOn(Room2)
Run Code Online (Sandbox Code Playgroud)

要么

SwitchOff(Room1)
Run Code Online (Sandbox Code Playgroud)

当我不知道他们的索引时,如何从左括号中移除所有字符(到右括号)

bam*_*s53 10

如果你知道字符串匹配模式,那么你可以这样做:

std::string str = "At(Robot,Room3)";
str.erase( str.begin() + str.find_first_of("("),
           str.begin() + str.find_last_of(")"));
Run Code Online (Sandbox Code Playgroud)

或者如果你想更安全

auto begin = str.find_first_of("(");
auto end = str.find_last_of(")");
if (std::string::npos!=begin && std::string::npos!=end && begin <= end)
    str.erase(begin, end-begin);
else
    report error...
Run Code Online (Sandbox Code Playgroud)

您也可以使用标准库<regex>.

std::string str = "At(Robot,Room3)";
str = std::regex_replace(str, std::regex("([^(]*)\\([^)]*\\)(.*)"), "$1$2");
Run Code Online (Sandbox Code Playgroud)