使用 istream 重载>>

Overloading >> using istream

本文关键字:gt 重载 istream 使用      更新时间:2023-10-16

所以我试图重载>>运算符,但在这种情况下,我得到了一个以null结尾的字符串。我如何让用户只输入足够的字符来分配我动态分配的char[]命名数据。我知道有一种方法可以让我制作一个非常大的临时char[],并使用for循环将它们复制进去,但我想在不制作很大的char[]的情况下制作它。我现在有这个代码,但我知道它不起作用,因为我的类中允许的长度被传入

std::istream & operator>>(std::istream & is, String346 & objIn) {
        using std::istream;
        is >> objIn.data;
        return is;
    }

C++语言不包含从技术上禁止用户为char数组"只输入足够的字符"的规定。可能有一些特定于操作系统的资源可供您使用,例如限制文本输入字段中的最大字符数,但这超出了C++的范围。

std::istream中读取时,您的代码必须准备好处理和处理不符合您的标准的输入。抛出一个异常,在打印错误消息后退出程序,或者读取最多可以接受的字符数并忽略多余的字符——以任何对您有意义的方式。这完全取决于你。

std::istream::get()有一个重载,允许您限制输入的大小。不过,您仍然需要以某种方式处理剩余的输入。