- ベストアンサー
C++でファイルから複数行のデータを入力する方法
- C++でファイルから複数行のデータを入力する方法を紹介します。
- ファイルの操作を行うC++のプログラムで、複数行のデータを取り込む方法について解説します。
- ifstreamを使用してファイルからデータを読み込み、適切に格納する方法について説明します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.2 ですが…… この場合、「うまく格納されていません」という表現は非常に困るわけです。 > 確認方法はファイルの数=aとして このとき、a の値を確認しましたか? また、a が「0」だったとしたら、強制的に a = 1 等としてみるのも良いかもしれません。「格納されていない」のか、「ファイルの数の設定が間違い」なのか、原因の切り分けをします。 また、 > cout<<x[i]<<" "<<y[i]<<" "<<z[i]<<endl; ここで、「うまく格納されていない」と判断したのは、 ・何も表示されなかったから ・表示はされたがゴミばかりだったから ・それらしい数字は表示されたが前後にゴミがあったから ・期待した数より多い/少ない個数しか表示されないから ・例外が発生して落ちたから のどのような現象かで、原因も対処も異なってきます。
その他の回答 (2)
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
やはり、うまく動いているように思えますが? ひとつだけ、勘違いしそうな場面としては、fin.eof() が真になるのは、(データを全部読み込んだときではなくて)最後のデータを超えてデータを読もうとして失敗したとき、です。 ですので、この場合の while((!fin.eof()) は、実質的には意味を成していません。 実際には、65 を読み込んだ後、もう一度ループを回ろうとして、最初の ifn >> i で、失敗します(このとき、eof() は真になります) ここで、if(!(fin >> i)) break; に引っかかって、ループを抜けるという動作になります。 こう言うところで何かあるかも知れませんね。
- hello_world
- ベストアンサー率46% (15/32)
自分の環境で記載されているコードを試しましたが、きちんと動いていますよ?コードには値格納の確認部分がありませんが、どう言った方法を取られたのでしょう?また実際使われているデータファイル名はパスを含め正しいものですか?
補足
確認方法はファイルの数=aとして for(i=0;i<a;++i){ cout<<x[i]<<" "<<y[i]<<" "<<z[i]<<endl; } という形で確認しました。 パスは合ってました。