如何用字符替换元音字母?

时间:2018-01-21 07:35:47

标签: c++

如何用字符替换元音字母,例如输入:asd输出:.sd,所以我们用'替换元音字母。',我试图这样做,但我不能&#39不知道为什么,这是我的代码:

#include <iostream>
using namespace std;
int main () {
string s;
cin>>s;
if (s=="a")
    s='.';
if (s=="e")
    s='.';
if (s=="u")
    s='.';
if (s=="o")
    s='.';
if (s=="i")
    s='.';
  cout<<s<<endl;

}

为什么没有改变?输入=输出?

3 个答案:

答案 0 :(得分:3)

你有问题。当你读取字符串“s”时,它等于“asd”。因此,当它在条件(s ==“a”)中进行比较时,它是错误的。您必须通过char比较char。我分享了一个可能的解决方案:

#include <iostream>

int main()
{
    std::string s;
    std::cin >> s;
    for (char& c: s)
    {
        if (c == 'a' || c=='e' || c == 'i' || c == 'o' || c == 'u')
            c = '.';
    }
    std::cout << s << std::endl;
}

答案 1 :(得分:3)

如果字符为元音,您可以使用std::replace_if替换字符,使用std::string::find轻松判断字符是否为元音,即:

std::string s = "abcvaoi";
std::replace_if( s.begin( ), s.end( ), [] ( const char c ) {
    return std::string( "aeiou" ).find( c ) != std::string::npos;
}, '.');

答案 2 :(得分:-3)

为简单起见,您可以使用switch case和for循环。

using namespace std;
#include<iostream>
int main()
{
string a;
cin>>a;
for(int i=0;a[i]!='\0';i++)
{
    switch (a[i])
    {
        case 'a':a[i]='.';
                 break;
        case 'e':a[i]='.';
                 break;
        case 'i':a[i]='.';
                 break;
        case 'o':a[i]='.';
                 break;
        case 'u':a[i]='.';
                 break;


    }
}
cout<<a;
}