Я пытаюсь пропустить первую строку из входного файла и, возможно, вторую строку.
//Ignore first line, second if begins with #
in.ignore(256, '\n');
char c = in.peek();
if(c == '#')
in.ignore(256, '\n');
//read in all nums, including x, y, gs
while(in >> num) {
pic.push_back(num);
}
Моя проблема заключается в том, что ничто не возвращается в pic. Правильно ли я игнорирую?
Я проверил ваш код в двух случаях.
256
символов. В этом случае он работает по-разному.256
символов. В этом случае он ломается.Однако, используя исправление, предложенное DietmarKuhl, код больше не ломается:
#include <iostream>
#include <limits>
using namespace std;
int main(){
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
char c = cin.peek();
if(c == '#')
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
int num;
//read in all nums, including x, y, gs
while(cin >> num) {
cout << num << endl;;
}
}
256
как магическое число, но это не так. Магическое число, указывающее, что столько символов, сколько необходимо пропустить, являетсяstd::nimeric_limits<std::streamsize>::max()
.