如何使用ifstream将任何自定义数据类型写入文件? 如问题所述,我想用C++中的IFFILE将类的自定义数据类型数据写入文件。需要帮助。
对于任意类,例如,如何使用ifstream将任何自定义数据类型写入文件? 如问题所述,我想用C++中的IFFILE将类的自定义数据类型数据写入文件。需要帮助。,c++,iostream,fstream,inserter,C++,Iostream,Fstream,Inserter,对于任意类,例如,Point,这里有一种相当简洁的方法可以将其写入ostream #include <iostream> class Point { public: Point(int x, int y) : x_(x), y_(y) { } std::ostream& write(std::ostream& os) const { return os << "[" << x_ << ",
Point
,这里有一种相当简洁的方法可以将其写入ostream
#include <iostream>
class Point
{
public:
Point(int x, int y) : x_(x), y_(y) { }
std::ostream& write(std::ostream& os) const
{
return os << "[" << x_ << ", " << y << "]";
}
private:
int x_, y_;
};
std::ostream& operator<<(std::ostream& os, const Point& point)
{
return point.write(os);
}
int main() {
Point point(20, 30);
std::cout << "point = " << point << "\n";
}
#包括
类点
{
公众:
点(intx,inty):x_ux,y_y{}
std::ostream&write(std::ostream&os)常量
{
对于任意类,比如说,Point
,返回os,这里有一个相当干净的方法将其写入ostream
#include <iostream>
class Point
{
public:
Point(int x, int y) : x_(x), y_(y) { }
std::ostream& write(std::ostream& os) const
{
return os << "[" << x_ << ", " << y << "]";
}
private:
int x_, y_;
};
std::ostream& operator<<(std::ostream& os, const Point& point)
{
return point.write(os);
}
int main() {
Point point(20, 30);
std::cout << "point = " << point << "\n";
}
#包括
类点
{
公众:
点(intx,inty):x_ux,y_y{}
std::ostream&write(std::ostream&os)常量
{
当然,我的C++有点生疏,但这似乎不可能。你需要一个<代码>流>代码>或者<代码> fStase>代码>。你想给IFScript写一封信吗?当然我的C++有点生疏,但这似乎不可能。你需要一个<代码>流>代码>或者<代码> fStase
+1.我想补充的唯一一件事是,如果不想在类本身中使用公共write
方法,可以声明全局重载操作符@stakx。谢谢你的建议。我过去常常把它编码为朋友,但没有write
,但发现编写点很乏味。
。我必须承认,我从未考虑过私有写入
选项。我想,一旦你决定使用朋友
,重复前缀比私有写入
要省力。事实上,我发现你的解决方案非常干净,而公共写入
肯定没有什么坏处,尤其是当它与另一个开发人员沟通时这里有一个错误。write应该声明为const.std::ostream&write(std::ostream&os)const+1.我想补充的唯一一件事是,如果不想在类本身中使用公共write
方法,可以声明全局重载运算符@stakx。谢谢你的建议。我过去常常将其编码为朋友,但没有write
,但发现编写点非常繁琐。
。我必须承认,我从来没有考虑过私有写入
选项。我想一旦你决定使用一个朋友
,重复前缀比私有写入
要省力。事实上,我发现你的解决方案非常干净,而公共写入
肯定没有什么坏处,尤其是当它与另一个开发人员沟通时这里有一个错误。write应该声明为const.std::ostream&write(std::ostream&os)const