-3

我正在解决这个问题。

编写一个 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;

}
4

1 回答 1

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.

于 2012-08-28T11:32:47.820 回答