![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
C++でファイル操作をプログラミングしています。
入力として使いたいファイルは以下のように記述されています。
1 2 3
2 2 2
54 57 65
のように数字の間にはスペースが入ってます。また3つ目の数字の後には
改行が入っています。
このようなデータを取り込むときはどのように記述すればいいのでしょうか?
今作ってみたコードは以下のようなんですけど、うまく格納されていません。
よろしくお願いします。
ifstream fin("ファイル名");
vector<int> x,y,z;
while (!fin.eof()){
if (!(fin >> i)) break;
x.push_back(i);
if (!(fin >> i)) break;
y.push_back(i);
if (!(fin >> i)) break;
z.push_back(i);
}
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_04.png?c9bd177)
No.3ベストアンサー
- 回答日時:
No.2 ですが……
この場合、「うまく格納されていません」という表現は非常に困るわけです。
> 確認方法はファイルの数=aとして
このとき、a の値を確認しましたか?
また、a が「0」だったとしたら、強制的に a = 1 等としてみるのも良いかもしれません。「格納されていない」のか、「ファイルの数の設定が間違い」なのか、原因の切り分けをします。
また、
> cout<<x[i]<<" "<<y[i]<<" "<<z[i]<<endl;
ここで、「うまく格納されていない」と判断したのは、
・何も表示されなかったから
・表示はされたがゴミばかりだったから
・それらしい数字は表示されたが前後にゴミがあったから
・期待した数より多い/少ない個数しか表示されないから
・例外が発生して落ちたから
のどのような現象かで、原因も対処も異なってきます。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_04.png?c9bd177)
No.2
- 回答日時:
やはり、うまく動いているように思えますが?
ひとつだけ、勘違いしそうな場面としては、fin.eof() が真になるのは、(データを全部読み込んだときではなくて)最後のデータを超えてデータを読もうとして失敗したとき、です。
ですので、この場合の while((!fin.eof()) は、実質的には意味を成していません。
実際には、65 を読み込んだ後、もう一度ループを回ろうとして、最初の ifn >> i で、失敗します(このとき、eof() は真になります)
ここで、if(!(fin >> i)) break; に引っかかって、ループを抜けるという動作になります。
こう言うところで何かあるかも知れませんね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c++でテンプレートのコードでわ...
-
バッチファイルで以下のような...
-
プログラミングの課題がわから...
-
C++プログラミングコードにポリ...
-
C言語 1から20までの逆数の和を...
-
Cのコンパイルでコメントアウト...
-
int16_t の _t は何?
-
数字の単位 何故10m>0.003なの...
-
だれがとけるの?
-
こんなことてしますか??
-
gccを行ってもexeファイルが生...
-
これなにがちがうんですか??
-
C言語 入力した値から0までの数...
-
ディスプレイの解像度とマウス...
-
応用情報技術者試験の令和元年...
-
S-JIS → JIS コード変換するには
-
なんで
-
あなたは、Excelはどうやって学...
-
スタックフレームの消滅
-
PC画面を録画するプログラムでd...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイルの作り方(CSV→...
-
C言語で特定の行を抽出する方法...
-
タブの色を変更する方法
-
【エクセル】改行無しテキスト...
-
htaccessで特定のディレクトリ...
-
全角と半角文字が混在している...
-
空白文字 \\f と\\v の違いに...
-
【Access2003】VBAでタブ区切り...
-
VBAのFileFormatで悩んでいるこ...
-
VBAでタブ区切りテキストの保存...
-
エクセルのデータをテキストデ...
-
csv出力
-
メールアドレス登録の重複をチ...
-
ファイル読み込みについて
-
タブコントロールに付いて
-
テキストファイル(tsv)を改行...
-
Edge スクレイピング
-
C++でファイルから複数行のデー...
-
デルファイ TabControl タブの...
-
VBAでCSVファイルを途中行まで...
おすすめ情報