3

文字列内の文字からアクセントを削除して大文字にするために、このコードを書きました。

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

通常の文字は大文字にしますが、アクセント付きの文字は無視し、アクセント付きの小文字で出力します。前もって感謝します!

4

1 に答える 1

2

はワイド文字の文字列である可能性が最も高いですinputが、 などの文字リテラル'ö'はワイド文字ではないため、比較が失敗します。などを使用しL'ö'ます。

これらの比較では警告が生成されているはずです。そうでない場合は、コンパイラによる警告をさらに有効にして、警告が表示されるようにする必要があります。

于 2012-12-01T15:29:58.297 に答える