2014-02-06 58 views
0

我想輸入一個數字,並根據該數字,用戶將不得不輸入x次的數量。沒有匹配的函數getline C++

例如

3 //how many the user wants 
192 231 2 3 
22192 2 1 23 
2831 3 23 1 

我試着這樣做,但它口口聲聲說爲getline

int* x = NULL; 
int numbers; 
cin >> numbers; 
x = new int[numbers] 

for (int i=0;i<numbers;i++) 
{ 
    std::getline(std::cin, numbers) 
    x[i] = numbers 
} 
+0

有一些引人注目的偉大的原因,你不能用'的std ::矢量'? –

+0

那麼,你是否想閱讀3個('數字')的整數行,3個整數或總是4個整數行的數字?另外:你每次都會覆蓋循環邊界,這不是一個好主意。 – Xarn

回答

1

你絕對不想使用std::getline,因爲它看起來不像是你想要的一串數字,而是數字本身。

你想要的是按數字讀取數字,所以使用你在numbers中讀取的相同的東西,但不要在numbers中再次讀取它。 (因爲你正在使用它的循環)

總之,你想要什麼的近似值是這樣的:

int how_many; 
std::vector<int> numbers; 
std::cin >> how_many; 
for (int i = 0; i < how_many; i++){ 
    int temp; 
    std::cin >> temp; 
    numbers.push_back(temp); 
} 
+0

我想這樣做,而不使用矢量,但指針 – Kara

+0

@Kara然後繼續像你已經做的那樣初始化'x',用'std :: cin >> x [i]'來讀取。 – Xarn

3

沒有匹配的功能,則對getline的第二個參數的類型爲std::string

+0

有沒有什麼辦法可以做到這一點,而不是一個字符串? – Kara

+0

@Kara:您可以查看文檔並使用任何可用的過載。 http://en.cppreference.com/w/cpp/string/basic_string/getline –

+0

@Kara你已經想出瞭如何在第3行中提取一個「int」。但是你不應該使用'numbers'作爲你的int '因爲你的'for'循環取決於它。 –