C++ 如何读取字符串并将其转换为不同的子字符串?
我有一个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是链的末端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,那个么就让它成
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