V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SupperMary
V2EX  ›  C

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

  •  
  •   SupperMary · 2019-04-04 20:31:20 +08:00 · 2528 次点击
    这是一个创建于 1820 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我已经在类里面重载了“>>”和“<<”运算符,在 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);
    

    求指教😶

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

    他们是有继承关系的。
    hackpro
        10
    hackpro  
       2019-04-04 22:56:08 +08:00
    在 Class A 的实现中加一个 operator>>
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1435 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:48 · PVG 07:48 · LAX 16:48 · JFK 19:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.