我正在解决这个问题。
编写一个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;
}
答案 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
的末尾。