私はC ++、特にファイル処理に不慣れです。このコードを作成しました。
#include <iostream>
#include <fstream>
using namespace std;
class student
{
public:
char s;
int age;
};
int main (void)
{
student a;
a.s = 'a';
a.age = 1;
ofstream myfile;
myfile.open("a1.txt",ios::app);
myfile.write(reinterpret_cast<char*>(&a),sizeof(student));
return 0;
}
ファイルを開いたときa1.txt
、そこには正しく文字が含まれていましたが、整数の場合、奇妙なエンコーディングと、このファイルを編集し続けると破損するというメッセージが表示されていました。整数と文字または文字列を含むファイルにオブジェクトを書き込むことはできませんか?
カスタム型を処理する独自の<<演算子を定義します。
#include <iostream>
#include <fstream>
using namespace std;
class student
{
char s;
int age;
};
ostream& operator<<(ostream &output, const student &o)
{
output << o.s << " " << o.age;
return output;
}
int main (void)
{
student a;
a.s = 'a';
a.age = 1;
ofstream myfile;
myfile.open("a1.txt",ofstream::app);
ofstream << a;
return 0;
}
あなたが呼んmyfile.write(reinterpret_cast<char*>(&a),sizeof(student));
だとき、それはあなたの構造体を人間が読める文字列に変換してからそれをファイルに書き込むことではありませんでした。実際には、構造体のメモリを一連の文字として解釈し、それをファイルに書き込んでいました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加