如何用字符替换元音字母,例如输入: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;
}
为什么没有改变?输入=输出?
答案 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;
}