在C++中迭代连接两个字符串

lig*_*ong 2 c++ string-concatenation

我知道在SE中已经要求串联串联问题死亡.但据我所知,我已经完成了所有可以帮助我的问题,徒劳无功.

这是我希望用这个程序完成的:

最初我有一个= 0和b = 1,分别为n = 0和n = 1.

对于下一个输入,即从n = 3开始,我的结果应该是前两个字符串的连接.(就像Fibonacci序列一样;只有连接被连接替换)

因此,例如:
对于n = 3,我的输出应为"10".
对于n = 4,我的输出应该是"101"
对于n = 5,我的输出应该是"10110"

我编写的代码没有逻辑问题,但我收到了SIGSEGV错误,我不明白为什么.

#include <iostream>
#include<new>
#include<string.h>

using namespace std;

int main()
{
    long int n,i;
    char *a="0";
    char *b="1";
    char *c=new char[100000];

cout<<"Enter  a number n:";
cin>>n;

for(i=0;i<n;i++)
{

    strcat(b,a);
    strcpy(a,b);

}
cout<<"\nRequired string="<<b;
Run Code Online (Sandbox Code Playgroud)

}

我究竟做错了什么?

Luc*_*ore 6

strcat(b,a);调用未定义的行为,因为b指向字符串文字.

char * strcat ( char * destination, const char * source );
Run Code Online (Sandbox Code Playgroud)

连接字符串将字符串的副本附加sourcedestination字符串.

由于这是C++,我建议你使用std::string+运算符.或者a std::stringstream.