2014-01-06 45 views
-1

所以我想做一個愚蠢的小控制檯響應的事情,因爲我很無聊,但由於某種原因,它不接受它作爲一個正確的答案每當你試圖刪除一些東西。該字符串看起來不錯,但是當我試圖用if(a==b)或類似的東西檢查它時,它不會有任何。下面的代碼:輸入似乎是把正確的字符串,但不被接受

string entry(){ 
    string input = ""; 
    char ch = getch(); 
    while (ch != '\r'){ 
     if (ch != '.'){ 
      ch = tolower(ch); 
      input += ch; 
      cout<<ch; 
      ch = getch(); 
     } 
     else if (ch == '.'){ 
      cout<<ch; 
      ch=getch(); 
     } 
     else if (ch == '\b'){ 
      cout<<'\b'; 
      input.resize((input.length()-1)); 
     } 
    } 
    cout << "\n"+input; 
    return input; 
} 

這將通過類似a=entry();使用,但是,正如我已經說過,它不爲任何if語句的工作。

回答

0

你有2個條件覆蓋整個光譜,然後另一個條件 - 這將永遠不會被採取:

if (ch != '.') { 
    // something 
else if (ch == '.') { 
    // something else 
} 

如果ch不是.或者是.涵蓋了所有選項。它相當於

if (ch != '.') { 
    // something 
else { 
    // something else 
}  

您需要排除如果一號\b字符。

0

如果(ch != '.')也符合該情況,那麼ch == '\b'永遠不會成爲第一個。也許會恢復順序:

if (ch == '.'){ 
     cout<<ch; 
     ch=getch(); 
    } 
    else if (ch == '\b'){ 
     cout<<'\b'; 
     input.resize((input.length()-1)); 
    } 
    else{ 
     ch = tolower(ch); 
     input += ch; 
     cout<<ch; 
     ch = getch(); 
    } 
+0

當我按下退格鍵時打開了。 – LemenDrop

+0

似乎有一個問題與input.resize((input.length() - 1));位。 – LemenDrop

+0

@Xarathorn你可能需要檢查'input'是否爲空。 –