• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++でファイルから複数行のデータを入力する方法)

C++でファイルから複数行のデータを入力する方法

このQ&Aのポイント
  • C++でファイルから複数行のデータを入力する方法を紹介します。
  • ファイルの操作を行うC++のプログラムで、複数行のデータを取り込む方法について解説します。
  • ifstreamを使用してファイルからデータを読み込み、適切に格納する方法について説明します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

No.2 ですが…… この場合、「うまく格納されていません」という表現は非常に困るわけです。 > 確認方法はファイルの数=aとして  このとき、a の値を確認しましたか?  また、a が「0」だったとしたら、強制的に a = 1 等としてみるのも良いかもしれません。「格納されていない」のか、「ファイルの数の設定が間違い」なのか、原因の切り分けをします。 また、 > cout<<x[i]<<" "<<y[i]<<" "<<z[i]<<endl; ここで、「うまく格納されていない」と判断したのは、 ・何も表示されなかったから ・表示はされたがゴミばかりだったから ・それらしい数字は表示されたが前後にゴミがあったから ・期待した数より多い/少ない個数しか表示されないから ・例外が発生して落ちたから のどのような現象かで、原因も対処も異なってきます。

その他の回答 (2)

回答No.2

やはり、うまく動いているように思えますが? ひとつだけ、勘違いしそうな場面としては、fin.eof() が真になるのは、(データを全部読み込んだときではなくて)最後のデータを超えてデータを読もうとして失敗したとき、です。 ですので、この場合の while((!fin.eof()) は、実質的には意味を成していません。 実際には、65 を読み込んだ後、もう一度ループを回ろうとして、最初の ifn >> i で、失敗します(このとき、eof() は真になります) ここで、if(!(fin >> i)) break; に引っかかって、ループを抜けるという動作になります。 こう言うところで何かあるかも知れませんね。

回答No.1

自分の環境で記載されているコードを試しましたが、きちんと動いていますよ?コードには値格納の確認部分がありませんが、どう言った方法を取られたのでしょう?また実際使われているデータファイル名はパスを含め正しいものですか?

ejty110
質問者

補足

確認方法はファイルの数=aとして for(i=0;i<a;++i){ cout<<x[i]<<" "<<y[i]<<" "<<z[i]<<endl; } という形で確認しました。 パスは合ってました。

関連するQ&A