c++ - 当前面有元音时,代码不会将大写字母转换为小写字母

标签 c++ string

Codeforces Problem-

当我输入前面带有元音的大写字母时,它不会将大写字母转换为小写字母 e-g-输入-aBAAcAba 输出-.B.c.b

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 语句中删除增量。

关于c++ - 当前面有元音时,代码不会将大写字母转换为小写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34974822/

相关文章:

c++ - 如何创建圆形阵列?

c++ - 如何避免与制造商定义的寄存器名称相同的基类名称不明确

java - 将字符串写入 Planner 中的文本文件

Java:如何使用变量右对齐文本

c++ - QT 编辑器智能按钮

C++ 如何让程序在全局范围内检测我的击键?

c++ - 使用图像像素

c++ - 如何使用 argv 作为变量

python - 将包含字符串和 NAN 的列转换为 Pandas 中的整数列表

c++ - 修改 C++ 字符串对象的底层 char 数组