Search code examples
c++stringmergesort

Merge sort the character in a std:string


So I am trying to Merge Sort the letters of a string so that they are in order. Capitalization does not matter since the homework does not require it. For some reason I cannot get templet[index] = split[leftfirst]. I get an "no suitable conversion function from std::string to char exists". Heres my merge function

 void merge(string *split, int leftfirst, int leftlast, int rightfirst, int rightlast)
{

string templet;
int index = leftfirst;
int savefirst = leftfirst;

while ((leftfirst <= leftlast) && (rightfirst <= rightlast))
{
    if (split[leftfirst] < split[rightfirst])
    {
        templet[index] = split[leftfirst];
        leftfirst++;
    }
    else
    {
        templet[index] = split[rightfirst];
        rightfirst++;
    }
    index++;
}
while (leftfirst <= leftlast)
{
    templet[index] = split[leftfirst];
    leftfirst++;
    index++;
}
while (rightfirst <= rightlast)
{
    templet[index] = split[rightfirst];
    rightfirst++;
    index++;
}
for (index = savefirst; index <= rightlast; index++)
    split[index] = templet[index];

}

Any help is appreciated.


Solution

  • split is a string*, which means split[some] will not get a character out of the string, it will rather get a string from a string array.

    Easiest way to fix this is to change the function definition to have string &split, if you want to modify the variable.