C++ 如何将此代码转换为使用字符串 char*recursivecombo(char*str,int选项,int级别) { int len=strlen(str); 级别++; 如果(级别==选项) { 对于(int i=0;i

C++ 如何将此代码转换为使用字符串 char*recursivecombo(char*str,int选项,int级别) { int len=strlen(str); 级别++; 如果(级别==选项) { 对于(int i=0;i,c++,string,char,C++,String,Char,我想使用string而不是char*std::string recursivecombo(const std::string&str,int选项,int级别) char * recursivecombo(char *str, int choices, int level) { int len = strlen(str); level++; if( level == choices) { for (int i = 0; i <

我想使用string而不是char*

std::string recursivecombo(const std::string&str,int选项,int级别)
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);

        }   
    }   
}
{ 级别++; 对于(int i=0;icout正如其他人发布的,您没有记录退货,因此这将是等效代码:

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*/ 
}
我想你的意思可能是:

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(常量字符串和strInput,int-nChoices,int-nLevel/*=0*/)
{
nLevel++;

如果(nLeal==nSead)CUT,你如何在char *上做这个STR.SUBL(1)?而且,你不返回这个函数的任何东西。在爪哇,这是不可编译的,我不知道C++是如何处理这个的,但是我至少会假设一些错误。为什么要使用String?它是否更好(更快,更小,可读,可移植)。除了上面提到的问题之外,你的代码不会被编译,因为你的递归调用没有足够的参数。如果你修复了你的当前代码,使它可以工作并且可以编译,那么从那里帮助转换和更改它会更容易。如果str是一个字符串,那么str.substr应该返回一个字符串。
at(i)的好用法
。请注意,
i
2
将在
i中提升为
无符号long
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);
        }
    }
}