簡體   English   中英

在C ++中從char獲得元音

[英]get vowels from char in C++

#include <iostream>
using namespace std;

char a[20];

int main()
{
    cin >> a;
}

如果我寫一個“ = home”,我想取元音(“ o”和“ e”),並用大寫字母(“ O”和“ E”)代替。 我怎么做?

編輯:您的答案很有幫助。 我做了這樣的事情:

    cin >> a;

for (int i = 0; a[i] != '\0' && 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] != '\0' && 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]);
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM