gpt4 book ai didi

c++ - 子串入数组

转载 作者:行者123 更新时间:2023-11-28 07:13:58 25 4
gpt4 key购买 nike

我有一个问题。我想将 substr 函数的结果插入到数组中,但它不是从头到尾读取我的字符串,而是省略了它的大部分并在末尾开始读取。而且它没有将结果正确地放入数组中——每个数组单元格都包含相同的子字符串我正在使用结构。这是我的代码的一部分,输入看起来像这样:

TTGATTCTATGGAGGGATGCTGGCAAGGCTCCGGAAGCAGCATCAGCAATTAAAAAATTACTGGACCTGATCTT

代码

结构体

    struct sekwencja
{
string sekwencja;
string etykieta[10000];
int jakosc[200];
int dlugosc;
string idf;
string idq;
}sek[100];

(...)

sek[i].dlugosc=sek[i].sekwencja.length();

(...)

cout<<"give the length of substring"<<endl;
cin>>h;

for (int i=0;i<7;i++)
{
for (int a=1; a<sek[i].dlugosc-1; a++)
{
if(sek[i].sekwencja.substr(a,h).length()==h){
for(int b=0;b<sek[i].dlugosc-1+h;b++)
{
sek[i].etykieta[b]=sek[i].sekwencja.substr(a,h);
}
}
}
}

非常感谢您的帮助!

编辑:

我不知道为什么我可以做这样的事情:

int b=0;
string etykieta [1000];
for (int i=0;i<7;i++)
{
for(int a=0;a<sek[i].dlugosc;a++)
{
etykieta[b]=sek[i].sekwencja.substr(a,h);
b++;
}
}

但不是这样

int b=0;
string etykieta [1000];
for (int i=0;i<7;i++)
{
for(int a=0;a<sek[i].dlugosc;a++)
{
sek[i].etykieta[b]=sek[i].sekwencja.substr(a,h);
b++;
}
}

最佳答案

首先,请注意,创建一个子字符串实际上是创建一个由原始字符的拷贝组成的子字符串。如果你想现在如果s.substr(a, h).size() == h你最好去测试一下 s.size() <= a + h : 此表达式不会创建子字符串,而只会比较几个整数。

不幸的是,您省略了您拥有的实体的声明和类型,而且我完全不理解您使用的所有名称。但是请注意,内部循环仅变化 b也不碰 ai , 即表达式

sek[i].sekencja.substr(a, h)

将始终相同(看看那个:罗马尼亚语是“序列”的意思吗?)。为什么你只看到你输入的尾部,我不知道。

关于c++ - 子串入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20530081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com