2015-03-27 2 views
0

Я пытаюсь читать входной файл в формате:Проверка, что строка входного файла содержит только один Int в C++

1 
4 
56 
12 

С каждым целым, находящимся в одной строке.

Цель состоит в том, чтобы определить, что каждая строка является int и что она содержит только одну int. Это мой фрагмент кода:

std::fstream file(filename, std::ios_base::in); 
int num=0; 
char c; 

file.open(filename); 
    while(std::getline(file, line)){ 
     std::istringstream s(line); 
     if(!(s >> num)){ 
      //error not a number 
      file.close(); 
      std::exit(EXIT_FAILURE); 
     }else if(s >> c){ 
      //error there was more than one object in a line 
      file.close(); 
      std::exit(EXIT_FAILURE); 

И ошибка, что я получаю это:

a5.cpp:28:22: error: implicit instantiation of undefined template 'std::__1::basic_istringstream<char, 
     std::__1::char_traits<char>, std::__1::allocator<char> >' 
       std::istringstream s(line); 
           ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iosfwd:120:33: note: 
     template is declared here 
    class _LIBCPP_TYPE_VIS_ONLY basic_istringstream; 
+3

включили вы заголовок 'sstream'? – Pradhan

+0

Если вы собираетесь прервать программу, если вход не работает, вы можете также открыть поток с исключениями и позволить ему умереть автоматически. –

+0

О, мужчина, ты был _so_ близко. Я думал, что этот вопрос будет больше «while (! .eof)» бессмыслицей или какой-то страшной реализацией 'sscanf'. Но нет ... ты просто пропустил заголовок! лол ;) –

ответ