如何只读取ifstream中的字符并忽略c ++中的数字?

时间:2016-09-09 18:43:30

标签: c++ iostream fstream

所以我有一个包含数字和一堆字符的文件,我想将它们存储在我自己的数据类型中,我称之为Grid,它基本上是一个二维向量,具有一些有用的功能,可以让我继续存储数据不用担心别的什么。无论如何这里是输入文件的样子的一个例子:

  

--- sa-fs-gäörq-qwe-f-s

     

- p21-2

     

4 - - - -

我希望能够通过char读取所有这些数据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;

}

1 个答案:

答案 0 :(得分: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库,除非您可以保证输入文件。