2011-09-20 67 views
0

如何將輸入的字符串(如「one two three four five」)分割爲數組。 currentyly我有這樣的:C++字符串數組切片

const int SIZE = 5; 
string digit[SIZE]; 

cout << "Enter the five here:"; 
for(int i = 0; i < SIZE; i++) 
{ 
    cout << i+1 << ")"; 
    getline(cin, digit[i]); 
} 

,但因爲它的立場,用戶必須按回車每次。我如何獲得它,所以當我打電話digit[1]上面的示例輸入,我得到two。希望這是有道理的,我想可能有一些功能可以爲你做到這一點,但如果真有這樣做的基本方式,那可能會使我受益最好,我仍然在學習。如果你想利用所有的

for(int i = 0; i < SIZE; i++) 
{ 
    cout << i+1 << ")"; 
    cin >> digit[i]; 
} 

回答

4

如果你想閱讀用空格隔開的話,你可以利用的事實,提取​​從輸入流串將在空白停止'五'你可以做到這一點。 ,然後您可以使用strtok()將字符串拆分爲五個字符串。 參見:http://www.cplusplus.com/reference/clibrary/cstring/strtok/

+0

完美 - 我不知道爲什麼沒有發生在我身上。謝謝! – hart929

0

得好:THX

+0

'strtok'雖然很討厭。全局狀態的使用可能會讓你感到痛苦。 –

+0

'strtok_r'和'strsep'比普通的'strtok'好得多,仍然發生在for循環中正確的? –

0

您也可以使用帶3個參數的getline函數。第3個是分隔符。

getline(cin, digit[i], ' '); 

當然,這不是從cin讀取輸入的最佳方式。但是你可以使用這種方法來分割你從用戶那裏得到的完整字符串。

+0

?我試了一下,這個過程失敗了。它不會繼續下一個任務。 – hart929