我正試圖編寫一個程序,不斷從用戶處獲取輸入信息,直到用戶輸入「quit」。每次用戶輸入時,我都希望程序輸出用戶輸入的單詞數量。因此,用戶的部分下面輸入:如何讓用戶輸入一個C++程序來計算單詞的數量?
hello how are you
會產生以下的輸出:
You entered 4 words.
但是,我無法寫程序,以便它依靠的只有一行字的數量;它在進入下一行之前不清除數字。因此,如果三次從用戶那裏獲得輸入,則會在這三行上加上單詞的總數。例如,下面的輸入:
how are you
i am good thank you
quit
將產生以下輸出:
You entered 9 words.
當我希望它輸出字的以下各行的用戶輸入(除了退出)的數量,即
>>how are you
<<You entered 3 words.
>>i am good thank you
<<You entered 5 words.
>>quit
這裏是我的代碼的相關位:
char *input;
int inum;
int inputLoop()
{
char quit[] = "quit";
inum = 0; //counts number of words
while (strcmp(input, quit) != 0)
{
cin >> input;
inum++;
}
cout <<"You entered " <<inum <<" words." <<endl;
我寧可不使用類似矢量的東西;無論我使用什麼都需要最終轉換爲* char,因爲我的全局變量是* char。 (而我的全局變量是* char,因爲根據特定的條件,輸入可能會被設置爲* argv [] from main。)
我已經嘗試了各種各樣的東西,但我無法通過strcmp(input,quit)一次比較輸入的一個字而不是比較整個輸入行以退出的事實。幫幫我。
@DeadMG:他提議'getline'。只要你知道它不是線程安全的,'strtok'在C中是完全正確的。 – netcoder 2012-08-01 17:40:16
@netcoder:除了'strtok'需要一個可變的C風格字符串,並沒有從C++'std :: string'得到一個明智的方法。它也不是線程安全的 - 對於OP的特殊情況來說,這可能是也可能不是一個問題,但會使其無法使用。 – 2012-08-01 17:43:18
我低估了一個完美的理由,並明確說明了原因。這是完全有建設性的。 – Puppy 2012-08-01 17:46:07