C++ 如何读取字符串并将其转换为不同的子字符串?

C++ 如何读取字符串并将其转换为不同的子字符串?,c++,string,substring,C++,String,Substring,我有一个2个RNA链:1个G-enyzme和1个U.C-enyzme,如果你在G酶中看到一个G,用一个斜线将它分开,U或C如果U表示U.C-enyzme,反之亦然,这意味着你可以在G-enyzme之后使用U或C,在U.C-enyzme之后使用G,在U.C-enyzme中使用G。我查找了一些关于分解类似substr的子串的代码,它们只能从1个位置一直到最后。有没有其他方法可以做到这一点 例如: G-enyzme拍卖,八月,G,CU 输出:=AUC/G、AU/G、G、CU 若并没有G,那个么就让它成

我有一个2个RNA链:1个G-enyzme和1个U.C-enyzme,如果你在G酶中看到一个G,用一个斜线将它分开,U或C如果U表示U.C-enyzme,反之亦然,这意味着你可以在G-enyzme之后使用U或C,在U.C-enyzme之后使用G,在U.C-enyzme中使用G。我查找了一些关于分解类似substr的子串的代码,它们只能从1个位置一直到最后。有没有其他方法可以做到这一点

例如: G-enyzme拍卖,八月,G,CU

输出:=AUC/G、AU/G、G、CU

若并没有G,那个么就让它成为字符串的末端,所以CU是链的末端

int main()
{
    string G_enyzme = "AUCG,AUG,G,CU,ACUAUACG";
    string U_C_enyzme = "GGAC,U,AU,GAU,C,U,AC,GC,AU";
    size_t g = G_enyzme.find('G');
    if(g != string::npos)  //if G position is found
    {
        //put a slash between AUC and G , AU and G, .... , ACUAUAC and G 
        //if the substring does not have G make it begin / end

    }
}

你的问题需要进一步澄清。我会处理第一个案子,剩下的就交给你了

如果u表示u.c-enyzme,则为u或c,反之亦然

我不清楚

#include <iostream>
#include <string>

std::string getStr(const std::string& str, const char& flag)
{
    std::string temp;
    // G-enyzme
    if ( flag == 'G' ){
        for ( int i(0); i < str.size(); ++i ){
            temp += str[i];
            if ( str[i] == 'G' ){
                temp.pop_back();
                temp += "/G";
            }
        }
    }
    //  U.C-Enyzme 
    if ( flag == 'U' ){
        //TODO  
    }
    return temp;
}


int main()
{
    std::string str ("AUCG, AUG, G, CU, ACUAUACG");
    std::cout << str         << std::endl;
    std::cout << getStr(str,'G') << std::endl;

    return 0;
}

像substr,它只从一个位置到最后。可以获取任意长度的子字符串,从任意位置开始,而不仅仅是直到字符串的结尾。@darkflames363,我没有c++14。
AUCG, AUG, G, CU, ACUAUACG
AUC/G, AU/G, /G, CU, ACUAUAC/G