2016-09-09 2 views
0

Итак, у меня есть файл с числами и кучей символов, и я хочу сохранить их в своем собственном типе данных, который я называю Grid, который в основном представляет собой двумерный вектор с некоторыми полезными функциями, которые позволяют мне идти вперед и хранить данные без беспокоясь о чем-либо еще. в любом случае, вот пример того, как входной файл будет выглядеть следующим образом:Как читать только символы из ifstream и игнорировать числа в C++?

--- са-фс-gäörq-qwe- фс

- p21-2

4 ---- -

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

int main() 
{ 
    ifstream file; 
    file.open("input.txt"); 
    Grid<char>g(5,5) //initializing 2d vector 5x5 
    while(!file.eof()) 
    { 
     for (int i=0; i<5;i++) 
      for(int j=0; i<5;j++) 
       file>>(g[i][j]); 
    } 
return 0; 

} 
+2

https://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong –

+0

@BaummitAugen им жаль, но я не мог найти никакого отношения к моему вопросу и вопрос в ссылке, вы мне поможете? –

+1

Это не должно отвечать на вопрос, но указывает на несвязанную ошибку в вашем коде. Вот почему я разместил его как комментарий вместо ответа. ;) –

ответ

1
char c; 
while(file >> c) { 

    if(!isdigit(c)) { 
// if((c >= 'A' && C <= 'Z') || (c >= 'a' && c <= 'z')) { 

     // do stuff with c 
    } 


} 

Или быть немного более идиоматических, используйте isalpha. Это может зависеть от настроек локали вашей среды C++. В идеале вы должны использовать хорошую библиотеку Unicode, если только вы не можете сделать гарантии относительно вашего входного файла.

+0

Как насчет того, чтобы не читать символ файла по символу? –

+0

@IvanRubinson Пожалуйста, уточните. Если это касается производительности, мой код предполагает, что поток файлов буферизуется. – Dai

+0

Я знаю, что @baum mit augen уже связал меня с ответами, которые имеют отношение к тому, что я собираюсь спросить, но почему именно не использовать 'while (! File.eof())'? –