c++backtrackingalgorithmspermutationsrecursion

[BackTracking] [C++] Permutations of given string

// STRING PERMUTATIONS
void swap(char &a, char &b)
{
    a = a^b;
    b = a^b;
    a = a^b;
}

void _strPermute(char *s, int n, int pos)
{
    if (pos == n-1)
    {
        cout << s << endl;
        return;
    }
    for (int i = pos + 1; i < n; i++)
    {
        swap(s[pos], s[i]);
        _strPermute(s, n, pos + 1);
        swap(s[pos], s[i]);
    }
}

void printStringPermutations(char *s, int n)
{
    if (n < 2) return;
    _strPermute(s, n, 0);
}