Combinations of string - k at a time

Implement combinations of a string on length N, with K letters chosen at a time (N>K).  Eg:  The combination of string "abc" with 2 letters chosen at a time is - ab, ac, bc

/*

 * StringCombinationWithSize.cpp

 *

 *  Created on: Apr 18, 2012

 *      Author: Kiran Hegde

 */

#include <iostream>

#include <string>

#include <vector>

using namespace std;

void combine(string prefix, string rest, unsigned int k, vector<string> &output) {

    if (rest.size() < k)

        return;

    if (k == 0)

        output.push_back(prefix);

    for (unsigned int  i=0; i<rest.size(); i++) {

        combine(prefix + rest[i], rest.substr(i+1), k-1, output);

    }

}

/**

 * Test the function

 */

int main() {

    string input("abc");

    vector<string> combs;

    combine("", input, 2, combs); // choose 2 at a time

    cout << "Combinations: " << combs.size() << endl;

    for (unsigned int i=0; i<combs.size(); i++) {

        cout << combs[i] << endl;

    }

}