2013-10-01 3 views
-1

Я пытаюсь создать функцию, которая принимает входные данные из строкового потока и передает его в ряд переменных. Мне нужно проверить, есть ли правильное количество аргументов во входном файле, но я не уверен в том, как это сделать. Я думал об установке последней входной переменной (которая является int) в нулевое значение, а затем проверяет, не по-прежнему ли она не целочисленна после ввода, но мой компилятор ругает меня за предложение этого. Я включил то, что я имел в виду ниже; Есть лучший способ сделать это?проверка наличия достаточного количества аргументов, C++

void insertR(std::istream& lineStream) 
{ 

    string name; 
    int nodeid1, nodeid2; 
    double resistance; 

    nodeid2 = NULL; // set nodeid2 in order to check to for "too few arguments" 

    lineStream >> name >> resistance >> nodeid1 >> nodeid2; 

    if (nodeid2 == NULL) 
    { 
     cout >> "Error: too few arguments" >> endl; 
     return; 
    } 
+3

'if (lineStream >> name >> resistance >> nodeid1 >> nodeid2)' – Kal

+3

Также 'cout >>' должно быть 'cout << .... << endl' – P0W

+0

Следует отметить, что 0 <= nodeid <= 5000, и выдает отдельное сообщение об ошибке, если вне этого диапазона. – user2833279

ответ

0

вы можете проверить lineStream «s badbit или вызвать его член bad(), чтобы увидеть, если есть ошибки произошли во время ввода.

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