2015-09-30 2 views
1

У меня возникла проблема, когда мой цикл for-loop пропускает функцию getline. Если я заменил его на std :: cin, тогда он работает, поэтому я думаю, что это связано с тем, что я ввел в getline.For-Loop Skipping getline C++

Вот мой код.

void setLocations(int amount) { 
    locations = new std::string[amount]; 
    locations[0] = startingLocation; 

    // starts at 1 because we want to skip first index. The amount is set at 2 by default, so the loop should iterate at least once. 
    for (int x = 1; x < amount; x++) 
     std::getline(std::cin, locations[x]);  
} 
+9

http://stackoverflow.com/questions/6819082/stdgetline-on-stdcin – HelloWorld

+0

http://stackoverflow.com/questions/257091/how- do-i-flush-the-cin-buffer –

ответ

2

Может быть, вы используете 'станд :: CIN >> someVar' перед вызовом функции 'setLocations', который не потребляет новой строки. Чтобы решить, использовать этот сегмент кода перед 'для' петли

std::cin.ignore(1, '\n'); 
+0

У меня ошибка, когда он говорит, что я не могу инициализировать параметр int_type при использовании cin.ignore (1, "\ n"); –

+0

@ Xari, извините, моя ошибка использует '\ n' not "\ n". – ashiquzzaman33