两个字符串的连接

时间:2012-08-28 11:27:47

标签: visual-c++

我正在解决这个问题。

编写一个String类并重载+运算符以混合两个字符串,以便用一个字符串创建一个新字符串 每个字符串中的字符拼凑在一起,直到所有字符混合。例如 •“1234567890”+“QWERTYUIOP”=“1Q2W3E4R5T6Y7U8I9O0P”

你能帮助我连接两个字符串的字符吗?

这是我写的代码:

#include "stdafx.h"
#include<iostream>
#include<conio.h>
#include<string>
using namespace std;
class MY_String : public string
{
  public:
    char *rep;
    MY_String(){}
    MY_String(char *tem)
    {
      rep = new char[strlen(tem)+1] ;
      strcpy(rep,tem); 
    }
    MY_String operator + (const MY_String &rhs)
    {
      char *temp;MY_String obj11("1234567890");
      temp= new char[strlen(rep) + strlen(rhs.rep)+1];//cout<<"TEMP::"<<rhs.rep<<endl;
      temp = strcat(rep,rhs.rep);
      return MY_String(temp);
    }
};
int main()
{
    MY_String obj1("1234567890");
    MY_String obj2("QWERTYUIOP");
    MY_String obj3;

    obj3 = obj1+obj2;
    cout<<obj3.rep;
    return 0;

}

1 个答案:

答案 0 :(得分:0)

假设您知道如何重载operator+,算法可能非常简单。

 string A, B, Result;
 int As = A.size(), Bs = B.size();
 int MixingLenght = min(As,Bs);
 for (int index = 0; index < MixingLength; ++index)
 {
     Result += A[index];
     Result += B[index];
 }

然后你必须决定如何处理其余部分(如果字符串大小不同)。您可以忽略它,也可以追加到Result的末尾。