2010-02-18 71 views
4

如果要通過空格分隔輸入(例如1 2 3 4 5)並將其放入數組中,如何從用戶處獲得輸入?謝謝。從用戶獲取輸入號碼

嗯。我看到大多數回覆都使用了一個我認爲必須進行研究的向量。我認爲會有更簡單但可能更復雜的迴應,因爲我們沒有使用像sscanf之類的向量。感謝您的投入。

回答

2
#include <vector> 
#include <iostream> 
using namespace std; 

int main() 
{ 
    vector<int> num; 
    int t; 
    while (cin >> t) { 
    num.push_back(t); 
    } 
} 
+0

1)你必須#包括。 2)對於這樣一個簡單的例子,我沒有看到使用命名空間std的必要性,你可以簡單地說std :: vector和std :: cin。 3)你並不需要push_back周圍的花括號。 –

+1

謝謝,我添加了iostream。我敢打賭,請求者是新手,使用名稱空間而不是在它們前面添加名稱會更容易。 – Pentium10

1

或者,更通用的形式:

#include <iostream> 
#include <vector> 
#include <iterator> 
#include <algorithm> 
using namespace std; 

int main() 
{ 
    vector<int> num; 

    copy(istream_iterator<int>(cin), istream_iterator<int>(), back_inserter(num)); 
} 
+0

OP詢問將輸入放入數組中,而不是向量(這也適用於Pentium10的答案)。 –

+0

矢量是CPP中的數組。 – Pentium10

+0

我使用'vector'的原因是因爲您不知道需要事先存儲多少個數字。如果你這樣做,那麼使用數組是有意義的。否則,在插入數組之前,您需要一個循環來測試索引超出範圍。 – dirkgently

1
#include <iostream> 
#include <iterator> 
#include <vector> 

    std::istream_iterator<int> iterBegin(std::cin), iterEnd; 
    std::vector<int> vctUserInput(iterBegin, iterEnd);