2016-09-09 10 views
0

私は数字とたくさんの文字を持っているファイルを持っています。私はそれを私自身のデータ型に格納したいと思います。グリッドは基本的に2次元ベクトルで、便利な機能を備えています。他の何かを心配している。とにかく、ここで入力ファイルは次のようになります方法の例です:--- SA-FS-gäörq-qwe- FSifstreamからの文字だけを読み込み、C++で数字を無視する方法は?

- 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; 

} 
+2

https://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-conondred-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

@bum mit augenは、私が今聞いていることに関連する答えに私をリンクさせていますが、なぜ、while(!file.eof())を使わないのですか? –

関連する問題