如何将此代码转换为使用字符串

时间:2010-09-25 06:17:01

标签: c++ string char

char * recursivecombo(char *str, int choices, int level)
{
    int len = strlen(str);

    level++;
    if( level == choices)
    {   
            for (int i = 0; i < len -2; i++)

            {   

                   printf("%c", str[i]) ;
            }   
    }   
    else
    {   
        for (int i = 0; i < len - 2; i++)
        {   
                printf("%c",str[i]);
                recursivecombo(str.substr(1), level);

        }   
    }   
}

我想使用字符串而不是char *。

2 个答案:

答案 0 :(得分:4)

std::string recursivecombo(const std::string& str, int choices, int level)
{
    level++;
    for (int i = 0; i < str.length() -2; ++i)
    {
        cout<<str.at(i) ;
        if( level != choices)
            recursivecombo(str.substr(1),8,/*Missing choce*/ level);
    }  
/*Missing return value*/ 
}

这只是一个使用字符串的模型。您的功能有些问题

1)您的返回值在哪里

2)如果你打算使用字符串使用cout而不是printf,如果它是C ++

3)使用前缀++。

答案 1 :(得分:2)

正如其他人发布的那样,您没有记录退货,因此这将是等效的代码:

string recursivecombo(const std::string & str, int choices, int level)
{
     what I wouldn't give for a holocaust cloak
}

我认为你的意思是:

void recursivecombo(const std::string & strInput, int nChoices, int nLevel = 0);

实施为:

void recursivecombo(const string & strInput, int nChoices, int nLevel /* = 0 */)
{
    nLevel++;
    if( nLevel == nChoices ) cout << strInput.substr(0,strInput.length()-2);
    else
    {
        for ( int i = 0; i < str.length() - 2; i++)
        {
            cout << str.at(i);
            recursivecombo(str.substr(1), nChoice, nLevel);
        }
    }
}