2012-12-01 68 views
2

去除口音我寫了這個代碼,刪除字符口音的字符串,使大寫:從人物

#include <iostream> 
#include <string> 
using namespace std; 
std::wstring input; 
int main() 
{ 
    input.reserve(255); 
    cout << "Enter string to be converted:" <<endl; 
    getline(std::wcin,input); 
    for (unsigned int iii=0;iii<input.length();iii++) 
    { 
     if(input[iii]== L'ő') input[iii]=L'o'; 
     if(input[iii]== L'ö') input[iii]=L'o'; 
     if(input[iii]== L'ó') input[iii]=L'o'; 
     if(input[iii]== L'ü') input[iii]=L'u'; 
     if(input[iii]== L'ú') input[iii]=L'u'; 
     if(input[iii]== L'ű') input[iii]=L'u'; 
     if(input[iii]== L'é') input[iii]=L'e'; 
     if(input[iii]== L'á') input[iii]=L'a'; 
     if(input[iii]== L'í') input[iii]=L'i'; 
     input[iii]=towupper(input[iii]); 
    } 
std::wcout<<input; 
return 0; 
} 

這讓大寫普通字符,但忽略了重音的人,並與它們打印在小寫口音。提前致謝!

+3

更可靠的方法可能是使用'iconv'將文本轉換爲ASCII並使用「音譯」選項。 –

回答

2

這很可能是因爲input是一個寬字符串,但字符文字如'ö'不是寬字符,這意味着比較將失敗。使用例如L'ö'

這些比較應該已經產生警告,如果沒有,那麼你應該打開編譯器的更多警告,所以你會得到一個警告。

+0

我取代它,但它仍然不能正常工作: – frankm1

+0

@ user1868866並更改爲寬字符文字上_both_比較和分配? –

+0

是的。另外,我注意到它只轉換了幾個字符。它似乎適用於'ű'和'ő',但不適用於其他的。我編輯了這個問題中的代碼,現在我已經有了。 – frankm1