ファイル出力に関する質問

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ただの屍のようだ

ファイル出力に関する質問

#1

投稿記事 by ただの屍のようだ » 7年前

C++習い始めの初心者です
ファイルにクラスの値を出力するのだが、intやdoubleで文字化けしてしまう
だれかたすけて

コード:

#include<iostream>
#include "../CPP-1/myheader.h"
#include<iomanip>
#include<fstream>
#include<cstring>
using namespace std;



class account{
	int custnum;
	char name[MINISIZE];
	double balance;
public:
	account(){custnum=balance=0;*name='\0';};
	account(char *b,int a,double c){custnum=a;strcpy(name,b);balance=c;}
	void show(){cout << name << '\n' << custnum << '\t' << balance;}
	friend istream &operator>>(istream &,account &);
	friend ofstream &operator<<(ofstream &,account &);
};

istream &operator>>(istream &stream,account &obj){
	int n;
	double b;
	char c[MINISIZE];
	stream >> c >> n >> b;
	strcpy(obj.name,c);
	obj.custnum = n;
	obj.balance = b;
	return stream;
}

ofstream &operator<<(ofstream &stream,account &obj){
	stream.write(obj.name,strlen(obj.name));
	stream.put('\n');
	stream.write((char*)&obj.custnum,sizeof(obj.custnum));
	stream.put('\t');
	stream.write((char*)&obj.balance,sizeof(obj.balance));
	stream.put('\n');
	return stream;
}

int main(){
	account o;
	cin >> o;
	ofstream fout("text",ios::out | ios::binary);
	if(!fout) return 1;
	o.show();
	fout << o;
	fout.close();
	return 0;
}

ISLe
記事: 2646
登録日時: 9年前
連絡を取る:

Re: ファイル出力に関する質問

#2

投稿記事 by ISLe » 7年前

文字として出力したいならwrite関数ではなく<<演算子を使えば良いのでは。

ios::binaryの指定はバイナリファイルにしたいということではないのでしょうか。

ただの屍のようだ

Re: ファイル出力に関する質問

#3

投稿記事 by ただの屍のようだ » 7年前

デスヨネー
実を言うと、ポインターは型に関らず同じサイズって聞いたので、char*にキャストすればうまくいくんじゃないと期待したんだけどね
ofstream fout("text",ios::out | ios::binary); → ofstream fout("text"); でうまくいく

ただの屍のようだ

Re: ファイル出力に関する質問

#4

投稿記事 by ただの屍のようだ » 7年前

やっぱうまくいかない
さっきうまくいったのが錯覚だったというのか、引き続き回答者募集です

ISLe
記事: 2646
登録日時: 9年前
連絡を取る:

Re: ファイル出力に関する質問

#5

投稿記事 by ISLe » 7年前

ただの屍のようだ さんが書きました:うまくいくんじゃないと期待したんだけどね
「うまくいく」とはどうなることですか?
ただの屍のようだ さんが書きました:引き続き回答者募集です
このプログラムで出力したファイルをテキストエディタで開いたら文字として読めません。
文字として読めませんが、データとしては正常です。

で、そこから、どうしたいのですか?
質問文にはそれが書かれていません。

動く屍のようだ

Re: ファイル出力に関する質問

#6

投稿記事 by 動く屍のようだ » 7年前

できました!!
たしかに質問に肝心なところ書いてなかったね。
補足:
データをファイルに入力 → 目による確認(ここで躓いた) → データを取り出し表示させる(うまくできました)
以上。ありがとうございました

ホヅミ
記事: 110
登録日時: 9年前

Re: ファイル出力に関する質問

#7

投稿記事 by ホヅミ » 7年前

あまりうるさくは言いたくありませんが、もう少し言葉遣いを気にした方がいいかもしれませんね。

閉鎖

“C言語何でも質問掲示板” へ戻る