问一个 C++运算符重载的问题

2019-04-04 20:31:20 +08:00
 SupperMary

我已经在类里面重载了“>>”和“<<”运算符,在 main 函数通过 cin 和 cout 也确实能够从控制台输入输出,但是我想从文件输入输出怎么办?大概像下面这样,

class A ……

int main()
{
    A varia;
    ifstream in;
    in.open("somefile");
    in>>varia;
}

搜索无果,猜测是不是需要多写一个文件输入的运算符重载?大概像下面这样

friend std::ifstream& operator>>(std::ifstream& input, SomeClassName& D);

求指教😶

2551 次点击
所在节点    C
10 条回复
bccoder
2019-04-04 20:33:27 +08:00
人生苦短,我来水一发
aheadlead
2019-04-04 20:33:43 +08:00
直接 istream 或 ostream ?
SupperMary
2019-04-04 20:37:30 +08:00
@aheadlead #2 不太能看懂你的意思,我能搜索的关于重载输入输出运算符的内容大都是这样的“ friend ostream &operator<<( ostream &output, const Distance &D )”,从 cin 和 cout 是能用的,但是我现在想弄成文件输入输出的。
SupperMary
2019-04-04 20:42:20 +08:00
看 C++的 string 类里面的就是 istream,不是 ifstream,不知道我哪里错了。
AngelCriss
2019-04-04 20:46:51 +08:00
你猜得对,这是做反序列化
catror
2019-04-04 20:48:11 +08:00
不用重新重载,ifstream 就是继承的 istream
SupperMary
2019-04-04 20:51:30 +08:00
@catror #6 好像我哪儿实现不太对,正在找问题在哪儿。
SupperMary
2019-04-04 20:55:57 +08:00
结帖,代码是对的,但是 VS 调试时的路径是在项目目录下,不是可执行文件目录下,god。
aheadlead
2019-04-04 21:22:09 +08:00
@SupperMary 在外面不好打字,你可以看看这个链接里的图 http://www.cplusplus.com/reference/iolibrary/

他们是有继承关系的。
hackpro
2019-04-04 22:56:08 +08:00
在 Class A 的实现中加一个 operator>>

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/552187

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX