如何读取字符串并使其成为不同的子字符串?

时间:2016-12-17 21:30:23

标签: c++ string substring

我有一个2 RNA链:1个G-enyzme和1个UC-Enyzme,如果你看到G酶中的G,则用斜线将其分解,如果你看到uc-enyzme的u或c,反之亦然意味着你可以使用u或c作为G-enyzme之后和g作为uc-enyzmes我查找了几个代码,打破了像substr这样只能从1个位置到结束的子串。有没有其他方法可以做到这一点?

实施例: G-enyzme" AUCG,AUG,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

    }
}

1 个答案:

答案 0 :(得分:0)

您的问题需要进一步澄清。我将介绍第一个案例,并将其余部分留给您,因为

  

"和u或c如果你是u.c-enyzme,反之亦然"

我不清楚。

#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;
}

,输出

AUCG, AUG, G, CU, ACUAUACG
AUC/G, AU/G, /G, CU, ACUAUAC/G