2015-10-19 64 views
0

我想在C++中製作一個簡單的計數器程序,它將用用戶輸入(通過按某個鍵指定)增加一個變量。以下是我想出了:在簡單的C++計數器程序中的用戶輸入

#include <iostream> 
#include <vector> 
#include <string> 

using namespace std; 

int main() 
{ 
    int variable; 
    char userInput; 
    variable = 0; 
    cout << "To increment variable one, press a \n"; 
    do 
    { 
     variable = variable++; 
     cout << "variable++ \n" ; 
    } while (userInput = "a"); 
} 

我已經仔細閱讀本網站上幾個相關的線程,並認爲這應該工作。但是,我得到了一些錯誤,包括對變量的操作沒有定義,並且從「const char」到「char」出現了「無效轉換」。

回答

0

在while循環,你需要一個std::cin,像

cin >> userInput; 

此外,以下行

variable = variable++; 

會產生Undefined Behaviour。閱讀更多關於Sequence point的信息,以獲得更好的解讀。

嘗試:

variable = variable + 1; 

最後在while循環斷裂狀態,而不是賦值操作

while (userInput = "a"); 

使用比較像:

while (userInput == "a"); 
+0

並不能真正解決「無效的轉換」的OP越來越因在while語句中進行賦值而不是進行比較。 –

+0

@AlgirdasPreidžius,ty,意外地錯過了那個。 –

-2

您需要使用

std::cin >> userInput; // each time you go through the `do` loop. 

此外,您只需要使用

variable++; // on the line. 

也!使用cout << variable << "\n";

最後,使用

} while(strncmp((const char*)userInput,(const char*)"a",1)); 
+0

並不真正解決OP由於while語句中的賦值而不是比較而獲得的「無效轉換」。 –

+0

'strcmp'指向空終止的字符串,而不是單個字符。 –

+1

我試過了 - 它不起作用。另外,爲什麼首先,當你擁有簡單的'char's時,你是否想要使用爲'char *'設計的函數? – Default

1

添加CIN在循環:

cin>>userInput; 

,改變

variable = variable++; 

variable++; // or variable = variable + 1; 

下一個你,而條件應該是這樣的:

while (userInput=='a'); 

所以,你的整個計劃看起來就像這樣:

#include <iostream> 

using namespace std; 

int main() 

{ 
int variable; 
char userInput; 
variable = 0; 
cout << "To increment variable one, press a \n"; 
do 
{ 
    cin>>userInput; 
    variable++; 
    cout << "variable++ \n" ; 
} while (userInput=='a'); 
return 0; 
} 
相關問題