вы можете создать функцию, которая возвращает объединенную строку, проверяющую, когда другая строка меньше другой, и использующую «идентификатор слияния», который будет заменять специальным символом, что-то вроде этого:
//----------------function declaration----------------
std::string merge_strings(std::string strA, std::string strB, char mergeIdentifier);
int greater_number(int numberA, int numberB);
int smaller_number(int numberA, int numberB);
int main()
{
std::string str1 = "H _ l _ o";
std::string str2 = " _ e _ l _";
std::cout << merge_strings(str1, str2, '_'); //outputs H e l l o
return 0;
}
//-----------------function definition----------------
std::string merge_strings(std::string strA, std::string strB, char mergeIdentifier)
{
std::string merged = "";
int greaterIndex = greater_number(strA.size(), strB.size());
int smallerIndex = smaller_number(strA.size(), strB.size());
for(int currentCharIndex = 0; currentCharIndex < greaterIndex; currentCharIndex++)
{
if(currentCharIndex < smallerIndex)
{
if(strA[currentCharIndex] == mergeIdentifier)
merged += strB[currentCharIndex];
else if(strA[currentCharIndex] != mergeIdentifier)
merged += strA[currentCharIndex];
}
else
break;
}
return merged;
}
int greater_number(int numberA, int numberB){return numberA > numberB? numberA : numberB;}
int smaller_number(int numberA, int numberB){return numberA < numberB? numberA : numberB;}
Если одна из строк меньше другой, она объединит только размер меньшей строки, но вы можете просто добавить отсутствующие символы, проверив, какая строка длиннее, и добавив символы из размера объединенной строки в конец более длинной строки.