2016-08-17 4 views
-3

文字列を取り、アルファベットの各文字のインデックスを見つけるだけのコードを以下に示します。文字列内にコードループを無限に広げるスペースがあるのはなぜですか?

void encrypt() 
{ 
    string alpha = "abcdefghijklmnopqrstuvwxyz"; 
    string word; 
    vector<char> temp; 
    char a, b; 


    cout << "Enter string to encrypt: \n"; 
    cin >> word; 

    for (int i=0; i<word.length(); i++) 
    { 
     bool t = false; 
     a = word[i]; 
     for (int j=0; j<alpha.length(); j++) 
     { 

      b = alpha[j]; 
      if (a == b) 
      { 
       cout << a << "'s index = " << j+1 << endl; 
       t = true; 
      } 
     } 
     if (t == false) 
     { 
      cout << "space here\n"; 
     } 
    } 

} 

コードは、私がないスペースで入力単語/文字列を正常に動作しますが、私は、入力プログラムが無限ループに入るスペースで文字列を。

編集メインは、()による要求に追加:あなたは CIN が瞬時に CIN COUTを行うことによって、完全にスペースで区切られた文字列を受け入れているかどうかを確認することができます

main() 
{ 
    int a; 
    bool b = false; 

    while (b == false) 
    { 
     cout << "1. Encrypt a string\n"; 
     cout << "2. Decrypt a string\n"; 
     cout << "3. Exit\n"; 
     cout << endl; 
     cin >> a; 
     cout << endl; 

     if (a == 1) 
     { 
      encrypt(); 
     } 
     else if (a == 2) 
     { 
      decrypt(); 
     } 
     else if (a == 3) 
     { 
      b = true; 
     } 
    } 
    return 0; 
} 
+0

ストリームにエラービットをクリアします。 mainで完全な最小限の例を示してください。 – merlin2011

+0

[最小限の完全で検証可能な例](http://stackoverflow.com/help/mcve)を投稿してください。 'cin >> word'は最初の空白以外の文字の後の最初の空白まで読むことができます。どのようにスペースを使って文字列を入力しましたか? – MikeCAT

+0

@ merlin2011 main()added –

答えて

関連する問題