【问题标题】:Inline ignore in StreamsStreams 中的内联忽略
【发布时间】:2015-06-07 11:12:53
【问题描述】:

有没有办法忽略 C++ 内联中的字符?

例如在this answer 我正在阅读:

istringstream foo("2000-13-30");

foo >> year;
foo.ignore();
foo >> month;
foo.ignore();
foo >> day;

但我希望能够内联完成这一切:

foo >> year >> ignore() >> month >> ignore() >> day;

我认为这在 C++ 中是可能的,但它绝对不是为我编译的。也许我记得另一种语言?

【问题讨论】:

    标签: c++ stream inline istream


    【解决方案1】:

    foo.ignore() 是成员函数,因此不能用作操纵器。它也没有正确的返回类型和参数声明可用作一个。不过,您可以轻松制作自己的作品:

    std::istream& skip(std::istream& is) {
        return (is >> std::ws).ignore();
    }
    
    foo >> year >> skip >> month >> skip  >> day;
    

    【讨论】:

    • +1,我打算提出同样的建议。但请注意,在使用通常仅为格式化输入保留的语法时,它会将 格式化 输入(>> year 等)与 未格式化输入 (ignore()) 混合在一起。跨度>
    猜你喜欢
    • 2014-04-22
    • 2014-06-12
    • 2012-10-29
    • 2022-08-15
    • 2020-11-26
    • 1970-01-01
    • 2012-03-25
    • 2015-02-03
    • 1970-01-01
    相关资源
    最近更新 更多