如何在输入成员函数中使用get()

时间:2017-08-10 03:55:01

标签: c++ oop c++11 input

我一直在尝试为Date类实现输入成员函数。这就是我所拥有的:

class Date {
    int year_;
    int mon_;
    int day_;
    int readErrorCode_;
    int value()const;
    void errCode(int errrorCode);

    public:
         std::istream& read(std::istream& istr);
         std::ostream& write(std::ostream& ostr)const;
}


std::istream& Date::read(std::istream& istr) {
    istr.get(year_,5);
    return istr;
}

我想从输入中提取4个字符并将其保存在我的Date类的参数year_中,但我得到了istr.get的错误,我想知道为什么istr.get在cin.get工作时不起作用。 / p>

错误信息是:没有重载函数的实例" std :: basic_istream :: get [with _Elem = char,_traits]"匹配参数列表参数类型是(int,int) 对象类型是:std :: istream

1 个答案:

答案 0 :(得分:0)

如果您愿意使用get功能,您可以通过char读取char,如

char c; while (is.get(c)) //concatenate into string if not / delim;

还有istream& get (streambuf& sb, char delim);方法,我不太了解。

但是,最简单的方法是将istream转换为std::string,然后使用substring的{​​{1}}方法。 How to read entire stream into a std::string?中有一些例子。