C++ 输入运算符重载

2024-03-18

我正在尝试重载我创建的 UserLogin 类上的输入运算符。不会引发编译时错误,但也不会设置值。

一切都在运行,但 ul 的内容仍然存在: 字符串 id 是 sally 登录时间为00:00 注销时间为 00:00

入口点

#include <iostream>
#include "UserLogin.h"

using namespace std;

int main() {
    UserLogin ul;

    cout << ul << endl; // xxx 00:00 00:00
    cin >> ul; // sally 23:56 00:02
    cout << ul << endl; // Should show sally 23:56 00:02
                        // Instead, it shows xxx 00:00 00:00 again

    cout << endl;
    system("PAUSE");
}

用户登录.h

#include <iostream>
#include <string>
#include "Time.h"

using namespace std;

class UserLogin
{
    // Operator Overloaders
    friend ostream &operator <<(ostream &output, const UserLogin user);
    friend istream &operator >>(istream &input, const UserLogin &user);

    private:
        // Private Data Members
        Time login, logout;
        string id;

    public:
        // Public Method Prototypes
        UserLogin() : id("xxx") {};
        UserLogin( string id, Time login, Time logout ) : id(id), login(login), logout(logout) {};
};

用户登录.cpp

#include "UserLogin.h"

ostream &operator <<( ostream &output, const UserLogin user )
{
    output << setfill(' ');
    output << setw(15) << left << user.id << user.login << " " << user.logout;

    return output;
}

istream &operator >>( istream &input, const UserLogin &user )
{
    input >> ( string ) user.id;
    input >> ( Time ) user.login;
    input >> ( Time ) user.logout;

    return input;
}

你的定义operator>>是错的。您需要通过user通过非常量引用进行参数,并摆脱强制转换:

istream &operator >>( istream &input, UserLogin &user )
{
    input >> user.id;
    input >> user.login;
    input >> user.logout;

    return input;
}

强制转换会导致您读入临时文件,然后立即将其丢弃。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 输入运算符重载 的相关文章

随机推荐

  • 如何完全反汇编Python源代码

    我一直在玩dis库来反汇编一些Python源代码 但我发现这不会递归到函数或类中 import dis source py test py with open source py as f source source code f sour
  • 打开工作表时自动执行的宏

    我的宏 update 是否有可能在每次打开 Excel 文件时自动执行 下面的代码不能很好地工作 谢谢 Private Sub Workbook Open Run update End Sub Option Explicit Sub upd
  • Google Sheets 调试无休止的计算和缓慢的加载时间(Chrome 开发工具)

    使用 Google 表格 随着时间的推移 它的复杂性和大小都在增长 现在正在无休止地计算 而且打开速度非常慢 该工作表包含大量数据 公式和导入范围 我已阅读有关如何加快工作表速度的最佳实践link https www benlcollins
  • 将 Fogbugz 与 TortoiseSVN 集成,无需 URL/Subversion 后端

    我已经安装了 TotroiseSVN 并且大部分存储库都从 C subversion 签入和签出以及一些从网络共享签入和签出的情况 当我最初发布这个问题时我忘记了这一点 这意味着我本身没有 颠覆 服务器 如何集成 TortoiseSVN 和
  • 为什么我收到错误“该类型的方法未定义”?

    我正在大学学习基础知识 希望获得有关 Eclipse 中以下错误的帮助 The method getCost is undefined for the type ShopCLI Exception in thread main java l
  • 在 Objective-C 中以编程方式计算 IRR(内部利率回报)和 NPV

    我正在开发一个金融应用程序并需要IRR in built functionality of Excel 计算并发现了如此好的教程C here http www codeproject com Tips 461049 Internal Rat
  • WPF 分隔符位置

    我正在使用分隔符在边框内绘制一条垂直线 起初这没问题 因为线条需要居中 但现在我需要将其定位在距左边框的自定义 x 位置 有没有办法做到这一点
  • 如何在 PyPI 中包含非 .py 文件?

    我是 PyPI 的新手 所以让我符合这一点 我试图在 PyPI 上放置一个包 但当我尝试使用 pip 安装它时遇到了一些麻烦 当我将文件上传到 PyPI 时 我收到一条警告 但 setup py 脚本完成时没有出现致命错误和 200 状态
  • 在 HLSL 中绘制超级椭圆

    更新 关于如何使用超级公式绘制一个的答案在最后 I need to draw a rounded rectangle such as this one using a SuperEllipse http en wikipedia org w
  • 如何在 chrome 扩展的选项页面和背景页面之间进行通信

    我面临一个问题 通过消息传递 我将 DOM 数据从内容脚本传输到后台页面 我想知道的是如何在选项页面和后台页面之间建立通信通道 应用程序编程接口chrome extension getBackgroundPage 没有用 传统的消息传递也不
  • Windows批处理脚本获取当前驱动器名称

    我有一个批处理文件 位于 USB 密钥上 我需要知道批次所在的驱动器名称 例如 如果它是 E mybatch bat 则打开时应该找到 E 与 F G 等相同的内容 我怎样才能在批处理脚本中做到这一点 视窗 CD 这就是您正在寻找的 它打印
  • Azure Redis 缓存 - GET 调用超时

    我们在 Azure 中有多个 Web 和辅助角色通过 StackExchange Redis 库连接到我们的 Azure Redis 缓存 并且我们经常收到超时 这使得我们的端到端解决方案陷入停滞 其中之一的示例如下 System Time
  • Flutter WebView 位置

    我正在创建该网站的 WebViewhttps nearxt com https nearxt com 它在打开时询问位置 但是当我使用此链接在 flutter 中创建 webview 时 那么它就无法定位 我还在应用程序中定义了位置 但 w
  • 如何在 CSV 文件中写入多行?

    我怎样才能创建一个 csv文件 在这个 csv我想写数据包的信息 这是我的代码 https www tcpdump org sniffex c https www tcpdump org sniffex c我想写入我的文件 csv一些印刷品
  • Prolog 中不带双精度的列表的所有组合

    有没有一种简单的方法可以获取列表的所有组合而无需双精度 没有双打我的意思是也没有彼此的排列 所以不行 a b c and c a b or c b a 因此对于输入 a b c 输出将是 a b c a b a c b c a b c 我只
  • 是否可以在不知道 Firebase 数据库中的两个自动生成的键内获取值?

    我在每个自动生成的键下添加了一些值 并添加了与每个键对应的子项 示例学生 然后我添加了自动生成的密钥与这个孩子 学生 和值 现在的问题是我如何从这个序列中获取值 我正在为学生使用模型课程 可以吗 要读取此数据 然后在您的应用程序中处理它 您
  • 如何删除名称以点(“.”)结尾的文件夹?

    我收到了一些由恶意软件创建的文件夹 其名称以点结尾 例如C a or C b etc 我找到了一个可以使用命令删除此类文件夹的解决方案rd q s C a 但如果我调用 win APIRemoveDirectory http msdn mi
  • 第一次加载页面时出现“无法在框架中查看此内容”错误

    我开发了一个搜索表单 托管在我公司的本地服务器 iis net core 网站 中 该网站是托管在另一台服务器 apache wamp 上的 Wordpress 该服务器也在公司内 两者都有不同的公共IP 但两者都托管在同一域的子域下 比如
  • Rails 每个循环每 6 个项目插入标签?

    我有 X 个图像对象 需要在视图中循环遍历 并希望每 6 个对象左右创建一个新的 div 对于画廊 我看过cycle 但它似乎改变了所有其他记录 有谁知道每 6 次向视图中插入代码的方法吗 我可能可以用嵌套循环来做到这一点 但我对这个有点难
  • C++ 输入运算符重载

    我正在尝试重载我创建的 UserLogin 类上的输入运算符 不会引发编译时错误 但也不会设置值 一切都在运行 但 ul 的内容仍然存在 字符串 id 是 sally 登录时间为00 00 注销时间为 00 00 入口点 include