C++ 当char'\';从RHS中找到,然后删除其余部分

C++ 当char'\';从RHS中找到,然后删除其余部分,c++,string,erase,C++,String,Erase,假设我有一个字符串,如下所示 input=“\\PATH\MYFILES这是我的刺” 输出=MYFILES 当找到第一个字符“\”时,从RHS获取单词(ie MYFILES),并删除其余字符 下面是我的方法,我很累,但它不好,因为有一个运行时错误,因为终止了一个核心 请建议使用最干净和/或最短的方法从上述字符串中仅获取一个单词(即MYFILES) 我已经搜索并尝试了过去两天,但没有运气。请帮助 注意:上面示例中的输入字符串并没有按应有的方式进行硬编码。该字符串包含动态更改,但字符“\”肯定可用

假设我有一个字符串,如下所示

input=“\\PATH\MYFILES这是我的刺”

输出=MYFILES

当找到第一个字符“\”时,从RHS获取单词(ie MYFILES),并删除其余字符

下面是我的方法,我很累,但它不好,因为有一个运行时错误,因为终止了一个核心

请建议使用最干净和/或最短的方法从上述字符串中仅获取一个单词(即MYFILES)

我已经搜索并尝试了过去两天,但没有运气。请帮助

注意:上面示例中的输入字符串并没有按应有的方式进行硬编码。该字符串包含动态更改,但字符“\”肯定可用

std::regex const r{R"~(.*[^\\]\\([^\\])+).*)~"} ;
std::string s(R"("  //PATH//MYFILES     This is my sting    "));
std::smatch m;
int main()
{

if(std::regex_match(s,m,r))
{
std::cout<<m[1]<<endl;

}
}
}
std::regex常量r{r“~(.[^\\]\\([^\\]+).*)~”;
std::string s(R“(“//PATH//MYFILES这是我的sting”);
std::smatch m;
int main()
{
if(std::regex_匹配(s,m,r))
{

std::cout要删除字符串的一部分,您必须找到该部分的开始和结束位置。在类中查找某些内容非常容易,因为该类有六个内置方法(
std::string::find_first_of
std::string::find_last_of
,等等)。下面是一个如何解决问题的小示例:

#include <iostream>
#include <string>

int main() {
    std::string input { " \\PATH\\MYFILES This is my sting " };
    auto pos = input.find_last_of('\\');    

    if(pos != std::string::npos) {
        input.erase(0, pos + 1);

        pos = input.find_first_of(' ');
        if(pos != std::string::npos)
            input.erase(pos);
    }

    std::cout << input << std::endl;
}
#包括
#包括
int main(){
字符串输入{“\\PATH\\MYFILES这是我的sting”};
自动位置=输入。查找(“\\”)的最后一个位置;
if(pos!=std::string::npos){
输入。擦除(0,位置+1);
pos=输入。首先查找('')中的\u;
if(pos!=std::string::npos)
输入。擦除(pos);
}

std::真的没有理由在这里使用正则表达式。你可以使用
find_last_of
find
substr
结合使用,以非常容易地得到这个词。谢谢你的回复。你能不能用一个小例子来说明我记得今天早上发布的一个非常类似的问题。它包含了一些有用的建议但是它似乎已经被删除了。。。