I have been a member here for a while but haven't done any programming in a long while. I never got very far when I tried before but now I am older and wiser so I thought I would give it another shot. I have flicked through the first couple of chapters of the SAMS 24 hour book that I have and I wanted to try a program so I have done the permutations challenge on this site.

This is the function I came up with:

Code:
void permutations (string input)
{
     int length = input.size();
     char permute [length];
     int temp = input.copy(permute,length,0);
     permute[temp]='\0';
     
     int count0 = 0;
     int count1 = 0;
     int count2 = 1;
     char temp1;
     char temp2;
     
     while (count0 < length)
     {
           while (count1 <= length - 2)
           {
                 temp1 = permute[count1];
                 temp2 = permute[count2];
           
                 permute[count1] = temp2;
                 permute[count2] = temp1;
           
                 cout << permute << "\n";
           
                 count1++;
                 count2++;
           }
           
           count1 = 0;
           count2 = 1;
           count0++;
     }                  
}
So the function takes a string that the user has inputted and then finds the various permutations of the string by taking the character at the front and then pushing it back a place and outputting the result each time it is pushed back until it outputs the original string at the end.

Have I done this in a very cumbersome way? Are there better ways I should do it?

One thing I don't understand is the use of the string copy function, at first I was calling it without putting the result into a variable, but this added characters, why is this? And why do I have to use it the way I have, I copied it from cpluplus.com where it showed how to use string::copy.