【发布时间】:2021-08-22 21:52:34
【问题描述】:
下面代码中的第一个 scanf 匹配并丢弃下一个输入流字符,而第二个 scanf 匹配并丢弃下一个输入流字符(如果它是冒号)。除了手动检查它存储在变量 ch 中的字符的值之外,还有什么方法可以使用 cin>> 来模拟这种行为?
scanf("%*c");
scanf(":");
char ch;
cin >> ch;
【问题讨论】:
下面代码中的第一个 scanf 匹配并丢弃下一个输入流字符,而第二个 scanf 匹配并丢弃下一个输入流字符(如果它是冒号)。除了手动检查它存储在变量 ch 中的字符的值之外,还有什么方法可以使用 cin>> 来模拟这种行为?
scanf("%*c");
scanf(":");
char ch;
cin >> ch;
【问题讨论】:
对于单个字符,通常使用 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 那样真正的内置“扫描”。
【讨论】: