如何将元音字母替换为字符

How to replace vowel letters with a character?

本文关键字:替换 字符      更新时间:2023-10-16

如何将元音字母替换为字符,例如输入:asd 输出:.sd,所以我们用"."替换元音字母,我尝试这样做,但我不知道为什么,这是我的代码:

#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;
}

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

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

#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;
}
如果字符

是元音,您可以使用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;
}, '.');

为了简单起见,您可以使用开关大小写和 for 循环。

using namespace std;
#include<iostream>
int main()
{
string a;
cin>>a;
for(int i=0;a[i]!='';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;
}