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);
}
No.3ベストアンサー
- 回答日時:
No.2 ですが……
この場合、「うまく格納されていません」という表現は非常に困るわけです。
> 確認方法はファイルの数=aとして
このとき、a の値を確認しましたか?
また、a が「0」だったとしたら、強制的に a = 1 等としてみるのも良いかもしれません。「格納されていない」のか、「ファイルの数の設定が間違い」なのか、原因の切り分けをします。
また、
> cout<<x[i]<<" "<<y[i]<<" "<<z[i]<<endl;
ここで、「うまく格納されていない」と判断したのは、
・何も表示されなかったから
・表示はされたがゴミばかりだったから
・それらしい数字は表示されたが前後にゴミがあったから
・期待した数より多い/少ない個数しか表示されないから
・例外が発生して落ちたから
のどのような現象かで、原因も対処も異なってきます。
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ランキング
-
【エクセル】改行無しテキスト...
-
バッチファイルの作り方(CSV→...
-
タブの色を変更する方法
-
Edge スクレイピング
-
window.open でのファイル指定方法
-
awkスクリプトでダブルクォーテ...
-
VBAでCSVファイルの特定行を書...
-
VBAでCSVファイルを途中行まで...
-
batファイルでrenameができませ...
-
Perlで特定文字列から特定文字...
-
perlのflock関数でロックをかけ...
-
close()で例外が投げられる理由
-
ExcelをCSV書き出す場合のシー...
-
Perl で ディレクトリ及びサブ...
-
vba dir の相対パス
-
Perlによるディレクトリ内の連...
-
パスから最後のディレクトリだ...
-
VBAで巨大なファイルの途中から...
-
文字コードの変換(Shift-JISか...
-
print文で&(半角)文字のエラー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイルの作り方(CSV→...
-
htaccessで特定のディレクトリ...
-
空白文字 \\f と\\v の違いに...
-
【エクセル】改行無しテキスト...
-
タブの色を変更する方法
-
VBAのFileFormatで悩んでいるこ...
-
【Access2003】VBAでタブ区切り...
-
C言語で特定の行を抽出する方法...
-
Edge スクレイピング
-
デルファイ TabControl タブの...
-
掲示板の過去ログDLについて
-
テキストファイル(tsv)を改行...
-
VBAでタブ区切りテキストの保存...
-
全角と半角文字が混在している...
-
AccessからExcelをタブ指定で開...
-
エクセル→XML 要素のコピー
-
OLEDragDropで フォームとSSTAB...
-
テキストファイルでタブ文字を...
-
PHPのfgetcsvのデリミタについて
-
VB6でのデータの編集(ファイル...
おすすめ情報