2016-11-11 8 views
0

よく!私はいくつかの整数値と文字列と空白のような非整数を含むテキストファイルを持っているので、私は整数のベクトルを使用していましたので、私はファイルを読むとopiningはOKですが、失敗はループを壊す!ここファイルを整数ベクトルに読み込むことができないのはなぜですか?

は私の主な例である:

ifstream in("file.txt"); 
if(in.fail()) 
    cout << "opening failed!" << endl; 
//opening is fine! 

int value; 
vector<int> v; 

while(in >> value) // the problem here; it fails why? 
{ 
    cout << "ok"; // not printed 
    v.push_back(value); 
} 

cout << v.size() << endl; // 0??!! 

これはfile.txtとの内容です:

32 43 24 32 
15 23 
57 
77 81 

私は文字のベクトルを加えた場合、それは大丈夫ですが、私は唯一の1を使用したいです整数

***すでにこのようなコードを使用していましたが、うまくいきましたが、今は何が起こったのかわかりません。それは実際に任意のヘルプ、コメント、先端は大歓迎です

をannotingと

+0

それは私のシステム上で動作します。しかし、ファイルのオープンが成功したかどうかを確かめる必要があります。 'if(!in)' – yassin

+0

はい開いています。私がチェックしました。私が疑うことの一つ: 'これはコンパイラーのなんらかの原因になりますか? ' –

+0

私はそれを疑いますが、どのコンパイラーを使用していますか? – yassin

答えて

0

にこのラインを高く評価しています:私は整数を読むことができますが

while(in >> value) 

氏は述べています...

しかし、記事で、この5月にあなたはこの事件を処理していません。

整数でないものを読み込んで処理してください。あるいは、文字列を読んで、何をすべきかを決めるだけです。それはバッファリングされているため、また

cout << "ok"; // not printed 

です。

この

cout << "ok" << flush; // printed 
+0

しかし、私のファイルはスペースで区切られた整数を持ち、 'flush'を追加しても何も起こりません。 –

+2

ファイルを投稿してください - 私は読者ではありません –

+0

投稿内容を投稿した投稿を編集しました –

0

はナンセンス疑問を持つあなたの迷惑なため最初すみませんください。私は意図せず、その後、私はそれを除去するが、それは私がそれを手動で開いて、いくつか読めない文字を削除大丈夫ですinput.txtに名前を変更しませんでしたWinRARのファイルinput.rarを作成したプロジェクトの私のメインフォルダに

:最後に、私は、エラーを発見することができました。私はその中に上記の内容を入れて、次にC++アプリケーションはそれを開くことに成功しますが、それを読むことはできません。 *今はを削除しました。input.rarとなりました。新しい文書テキストinput.txtが作成されました。

ご協力いただきありがとうございます。この投稿は他の人を助けるかもしれません。 * rarファイルや他のフォーマットを作成せずに、テキストファイルに名前を変更して、C++ fstream経由で読み込もうとしないでください。実際にはエラーが発生して解決できないように見えます。

関連する問題