C++ 如何将此代码转换为使用字符串 char*recursivecombo(char*str,int选项,int级别) { int len=strlen(str); 级别++; 如果(级别==选项) { 对于(int i=0;i
我想使用string而不是char*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 <
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;i cout正如其他人发布的,您没有记录退货,因此这将是等效代码:
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);
}
}
}