2014-02-06 4 views
0

Я пытаюсь ввести число, и на основе этого числа пользователь должен будет ввести х количество раз.Нет подходящей функции для 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

Есть некоторые невероятно большая причина, вы не можете использовать 'станд :: вектор '? –

+0

Итак, вы хотите прочитать в 3 ('numbers') целых целых чисел, 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 Вы уже поняли, как извлечь строку 'int' в строке 3. Но вы не должны использовать' numbers' как ваш 'int 'потому что ваш цикл' for' зависит от него. –

Смежные вопросы