在c++中从char中获取元音

get vowels from char in C++

本文关键字:获取 char c++ 中从      更新时间:2023-10-16
#include <iostream>
using namespace std;
char a[20];
int main()
{
    cin >> a;
}

如果我写a="home",我想把元音("o"answers"e")替换成大写字母("o"answers"e")。我怎么做呢?

编辑:你的回答很有帮助。我这样做了:

    cin >> a;
for (int i = 0; a[i] != '' && i <= 20; i++)
{
    if (a[i] == 'a')
        a[i] = 'A';
    if (a[i] == 'e')
        a[i] = 'eE';
    if (a[i] == 'i')
        a[i] = 'iI';
    if (a[i] == 'o')
        a[i] = 'oO';
    if (a[i] == 'u')
        a[i] = 'uU';
}

我想把例如"e"改成"eE",但它不起作用

  1. 写一个函数来告诉你某物是否是元音。这可以像循环遍历数组或使用std::set一样简单。
  2. 遍历字符并将元音替换为toupper的返回值。

作为次要注意事项,您可能希望使用std::string而不是char[]

基本上,您可以这样做:

#include <iostream>
using namespace std;
char a[20];
int main(){
    cin >> a;
    for (int i = 0; a[i] != '' && i < 20; i++){
        if (a[i] == 'a' || a[i] == 'e' || a[i] == 'i'|| a[i] == 'o'|| a[i] == 'u'){
            a[i] = a[i] + 'A' - 'a';
        }
    }
    cout << a;
}

程序迭代字符串中的每个字符,并将其与所有五个元音进行比较。如果它发现它是一个元音,它就把它变成大写。

a[i] = a[i] + 'A' - 'a';

似乎很难理解,但事实并非如此。在编码系统中,每个字符实际上都是一个整数。在大多数编码系统中,一个字母与其对应的大写字母之间的差异是由(' a' - 'a')给出的常数。因此,通过向任何字符添加('A' - 'A'),可以有效地将其转换为大写。

   //inside the loop body
   cin >> a;
   while(a[i])
   if(a[i] == 'a' || a[i] == 'e' || a[i] == 'i' || a[i]== 'o' || a[i]=='u')
   {
         a[i]=toupper(a[i]);
   }