我已经在类里面重载了“>>”和“<<”运算符,在 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);
求指教😶
1
bccoder 2019-04-04 20:33:27 +08:00 via Android
人生苦短,我来水一发
|
2
aheadlead 2019-04-04 20:33:43 +08:00 1
直接 istream 或 ostream ?
|
3
SupperMary OP @aheadlead #2 不太能看懂你的意思,我能搜索的关于重载输入输出运算符的内容大都是这样的“ friend ostream &operator<<( ostream &output, const Distance &D )”,从 cin 和 cout 是能用的,但是我现在想弄成文件输入输出的。
|
4
SupperMary OP 看 C++的 string 类里面的就是 istream,不是 ifstream,不知道我哪里错了。
|
5
AngelCriss 2019-04-04 20:46:51 +08:00 via Android
你猜得对,这是做反序列化
|
6
catror 2019-04-04 20:48:11 +08:00 via Android 1
不用重新重载,ifstream 就是继承的 istream
|
7
SupperMary OP @catror #6 好像我哪儿实现不太对,正在找问题在哪儿。
|
8
SupperMary OP 结帖,代码是对的,但是 VS 调试时的路径是在项目目录下,不是可执行文件目录下,god。
|
9
aheadlead 2019-04-04 21:22:09 +08:00 via iPhone
|
10
hackpro 2019-04-04 22:56:08 +08:00
在 Class A 的实现中加一个 operator>>
|