Concatenación de caracteres de dos cadenas

Estoy trabajando en este problema.

Escriba una clase String y sobrecargue el operador + para mezclar dos cadenas de manera que se cree una nueva cadena con un carácter de cada cadena junta hasta que se mezclen todos los caracteres. Por ejemplo • "1234567890" + "QWERTYUIOP" = "1Q2W3E4R5T6Y7U8I9O0P"

¿Me pueden ayudar a concatenar los caracteres de dos cadenas?

Este es el código que he escrito:

#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;

}

preguntado el 28 de agosto de 12 a las 12:08

1 Respuestas

Asumiendo que sabes cómo sobrecargar el operator+, el algoritmo podría ser muy simple.

 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];
 }

Luego tendría que decidir qué hacer con la parte restante (si las cuerdas son de diferente tamaño). Puede ignorarlo o agregarlo al final del Result.

Respondido 28 ago 12, 12:08

En realidad, he sobrecargado el operador '+' y usted ha usado el operador '+=' aquí. Entonces, ¿es como una y la misma cosa? - Ankur

No, son dos cosas diferentes. Además, estoy adjuntando char en mi solución (usando +=). Podrías usar std::string::append en lugar de. - Bartek Banachewicz

Oh, podrías usar la recurrencia de +, por supuesto, pero me parece una exageración. No voy a escribir tu tarea por ti. - Bartek Banachewicz

Oye, no te estoy pidiendo que completes mi tarea y tampoco soy un niño de escuela. - Ankur

He escrito el código. El único problema al que me enfrento es cómo sobrecargar el operador '+'. - Ankur

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.