C++ 我的代码中的分段错误(SIGSEGV)

C++ 我的代码中的分段错误(SIGSEGV),c++,segmentation-fault,C++,Segmentation Fault,我得到分割错误(SIGSEGV)的许多问题,iv解决了spoj和其他网站。我正在给problm语句链接和代码。有谁能告诉我下面我犯的错误吗。 问题: 提前谢谢 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; int main() { char a; string final,dumm

我得到分割错误(SIGSEGV)的许多问题,iv解决了spoj和其他网站。我正在给problm语句链接和代码。有谁能告诉我下面我犯的错误吗。 问题:

提前谢谢

 #include<iostream>
 #include<cstdio>
 #include<cstring> 
 #include<cmath>

 using namespace std;

int main()
{
    char a;
    string final,dummy;
    int t,h,p,k,z;
    scanf("%d",&t);
    while(t)
    {
         cin>>a>>h>>p;
         final=a;
         for(int i=0;i<h;i++)
         {
              k=0;
              for(int j=0;final[j]!='\0';j++)
              {
                   if(final[j]=='a')
                   {
                        dummy[k]='a';
                        dummy[k+1]='b';
                        k+=2;
                   }
                   else
                   {
                        dummy[k]='b';
                        dummy[k+1]='a';
                        k+=2;
                   }
              }
              final=dummy;
          }
          printf("%c\n",final[p-1]);
          t--;
      }
      return 0;
  }
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
字符a;
最后一个字符串,虚拟;
int t,h,p,k,z;
scanf(“%d”、&t);
while(t)
{
cin>>a>>h>>p;
最终=a;

for(int i=0;i
final
的类型为
std::string
,且不以null结尾

<>在for for循环中:<代码> for(int j=0;最终[j]!=‘0’;j++):/>代码。您将检查字符串的结尾(如< c >代码> char */COD>空终止字符串),但是在C++中,您应该以其他方式迭代字符串字符:使用迭代器,计数字符串大小或某事。


快速解决此问题(不知道是否还有其他问题)的方法是获取以null结尾的
char*
表示形式的
final
final.c_str()
并在执行过程中对其进行迭代。

正如sstn所指出的,您没有为dummy分配内存。因为它是一个字符串,看起来您只是想向其添加字符,所以可以执行以下操作:

for(int j=0;j < final.size();j++)
{
    if(final[j]=='a')
    {
        dummy.push_back('a');
        dummy.push_back('b');
    }
    else
    {
        dummy.push_back('b');
        dummy.push_back('a');

    }
}
final=dummy;
for(int j=0;j
我看不出有为“dummy”分配的内存。或者,
for(int j=0;j
会达到我认为的效果。