代码在前面有元音时不会将大写字母转换为小写字母

Code is not converting uppercase letter to lowercase when preceeded by a vowel

本文关键字:大写字母 转换 小写字 在前面 代码      更新时间:2023-10-16

代码强制问题-

当我输入前面有元音的大写字母时,它不会将大写字母转换为小写字母e-g-Input-aBAcAba输出-。公元前

int main() 
{
    int i;
    locale loc;
    string a;
    cin>>a;
    for(i=0;i<a.size();i++)
    {
        if(isupper(a[i]))
            a[i]=tolower(a[i]);
        if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u')
        {
            a.erase(a.begin()+i);
        }
        if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u')
            i--;
    }
    for(i=0;i<a.size();i++)
        cout<<'.'<<a[i];
    return 0;
}
 if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u')
 i--;

这不起作用,因为您已经从a中删除了元音,因此不会发生递减,并且您跳过下一个字符。

你可能想做

if (condition)
   a.erase(...);
else
   ++i;

并从 for 语句中删除增量。