我有下面的代碼,它只需要一個字符串,並找到字母表中的每個字符的索引。爲什麼字符串中的空格使得我的代碼無限循環?
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";
}
}
}
當我輸入一個字/串,沒有空間的代碼工作正常,但是當我輸入一個字符串用空格程序進入一個無限循環。
編輯main()中添加由於要求:
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;
}
我無法通過調用你的函數從'main'恰好一次重現此錯誤位。請用main顯示一個完整的最小示例。 – merlin2011
請發佈[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 'cin >> word'將只讀到第一個非空白字符後的第一個空白。你如何以及在哪裏輸入了一個空格字符串? – MikeCAT
@ merlin2011 main()添加 –