【问题标题】:How to mimic scanf("%*c) and scanf(":") behavior using cin>>如何使用 cin>> 模拟 scanf("%*c) 和 scanf(":") 行为
【发布时间】:2021-08-22 21:52:34
【问题描述】:

下面代码中的第一个 scanf 匹配并丢弃下一个输入流字符,而第二个 scanf 匹配并丢弃下一个输入流字符(如果它是冒号)。除了手动检查它存储在变量 ch 中的字符的值之外,还有什么方法可以使用 cin>> 来模拟这种行为?

scanf("%*c");
scanf(":");

char ch;
cin >> ch;

【问题讨论】:

标签: c++ scanf cin


【解决方案1】:

对于单个字符,通常使用 get/peek/unget 比使用 >> 更容易。

cin.get();  // read a single character (discarding it)

if (cin.peek() == ':') cin.get();   // discard a ':'

if (cin.get() != ':') cin.unget();  // same thing

但是,iostream 没有像 scanf 那样真正的内置“扫描”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-08
    • 2012-02-21
    • 1970-01-01
    • 2010-11-05
    • 2021-05-10
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    相关资源
    最近更新 更多