-3

私はこの問題に取り組んでいます。

Stringクラスを記述し、+演算子をオーバーロードして、2つの文字列を混合し、すべての文字が混合されるまで、各文字列から1つの文字をつなぎ合わせて新しい文字列が作成されるようにします。例•"1234567890"+ "QWERTYUIOP" = "1Q2W3E4R5T6Y7U8I9O0P"

2つの文字列の文字を連結するのを手伝ってくれませんか。

これは私が書いたコードです:

#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 に答える