C++ 如何让这个递归函数从字符串中提取大写字母?

C++ 如何让这个递归函数从字符串中提取大写字母?,c++,function,recursion,uppercase,C++,Function,Recursion,Uppercase,因此,函数应该返回字符串中的所有大写字母,但如果是大写字母,则只返回第一个字母。所以我认为I+1不起作用。而且,我必须对这段代码使用递归。我不允许使用isupper(),或任何其他“快捷方式”。那么有人看到代码中出了什么问题吗 string Return_Caps(const string& s, int pos = 0){ string temp; string a; if(s[pos] < 'A' && s[pos] > 'Z'){

因此,函数应该返回字符串中的所有大写字母,但如果是大写字母,则只返回第一个字母。所以我认为
I+1
不起作用。而且,我必须对这段代码使用递归。我不允许使用
isupper()
,或任何其他“快捷方式”。那么有人看到代码中出了什么问题吗

string Return_Caps(const string& s, int pos = 0){
    string temp;
    string a;
    if(s[pos] < 'A' && s[pos] > 'Z'){ // if the position does not have any capital letters, return a
        return a;
    }
    else{
        if(s[pos] >= 'A' && s[pos] <= 'Z'){ 
            temp = temp + s[pos];
            Return_Caps(s, pos + 1);
        }
    }
    return temp; 
}



string返回\u Caps(常量字符串&s,int pos=0){
字符串温度;
字符串a;
如果(s[pos]<'A'&s[pos]>'Z'){//如果该头寸没有任何大写字母,则返回A
返回a;
}
否则{

如果(s[pos]>='A'&s[pos]
返回上限(s,i+1);
-哪里定义了
i
或给出了一个值?应该是:
返回上限(s,pos+1);
!还有-你在哪里给出
A
一个值?你是对的!我的意思是pos+1still给出了同样的错误思想…:(请参阅我评论的第二部分!当
a
没有被分配任何内容时,
returna;
会发生什么情况?您应该使用调试器并逐步完成调用。它可能会透露很多信息。