🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

1405閲覧

fstream でデータをロードして保存したいです。c++

退会済みユーザー

退会済みユーザー

総合スコア0

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/01/02 07:57

編集2021/01/02 08:13

c++でデータをロードして保存するプログラムを作りたいですが、正しいやり方わかりません。
最近、fstream を見てやってみました。詳しいことがわかりません。

c++

1//これはプログラムその1です データを保存する 2#include <fstream> 3 4int main() { 5 int x = 10; 6 std::ofstream ofile("data.dat"); 7 8 ofile << x; 9 10 return 0; 11}

これはやりたいことです

c++

1//プログラムその2です 2#include <iostream> 3#include <fstream> 4 5int main() { 6 int y; 7 std::ofstream ofile("data.dat"); 8 std::ifstream ifile("data.dat"); 9 10 ifile >> y; 11 12  //ここはyと何がします 13  std::cout << y << std::endl; 14 15 ofile << y; //変更したyの値を保存する 16 17 return 0; 18}

これは毎回10を発表するはずですが
どこがいけないかを教えてぐださい。

ありがとうございます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/01/02 08:55

プログラムその2は何をしたいのかよくわかりません。 ifile と ofile が同じファイル名になってますが間違ってませんか?
退会済みユーザー

退会済みユーザー

2021/01/02 09:19

ファイル中身を変更してまた同じところに保存するって感じですね。
guest

回答2

0

まず,
std::fstream fs(filename)
でファイルを開き,
is_open関数で開いているか確認し,開いていた場合
開いているときにtrueを返します。
そして,ストリームで読み書きをし,
close関数でファイルを閉じます。

c++

1#include<iostream> 2#include<fstream> 3int main(){ 4 int y; 5 std::fstream fs("data.bat"); 6 if(!fs.is_open()){return 1;}//is_open関数は開いているときtrue 7 fs>>y; 8 std::cout<<y<<std::endl; 9 fs<<y; 10 fs.close(); 11 return 0; 12}

参考にしたwebサイト(cpprefjp)

投稿2021/01/02 08:57

編集2021/01/04 06:13
kansuke_t

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/01/02 09:20 編集

回答ありがとうございます。 このプログラム試しました。でもなん度もプログラムをコンパイルして一回目はいいですが2度目以上は何かが変です。僕間違ったらごめんなさい。
kansuke_t

2021/01/04 06:18

おそらくfs<<yがfile<<yになっていたからだとおもわれます。 指摘してくださりありがとうございます。 ソースコードの部分を修正したので確認してみてください。 なお,windows10で,g++ 9.2.0で,動作を確認できました。 きちんと実行できることを確認せずに回答してすみませんでした。
退会済みユーザー

退会済みユーザー

2021/01/05 14:34

ありがとうございました。
guest

0

ベストアンサー

C++

1#include <iostream> 2#include <fstream> 3 4void save() { 5 std::cout << "saving...\n"; 6 std::ofstream stream("data.dat"); 7 for ( int i = 0; i < 10; ++i ) { 8 stream << i << std::endl; 9 } 10 std::cout << "saved.\n"; 11} 12 13void load() { 14 std::cout << "loading...\n"; 15 std::ifstream stream("data.dat"); 16 int data; 17 while ( stream >> data ) { 18 std::cout << data << std::endl; 19 } 20 std::cout << "loaded.\n"; 21} 22 23int main() { 24 save(); 25 load(); 26}

投稿2021/01/02 08:40

episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問