在老师给的中缀表达式求值的cpp代码中发现一行这样的代码
if(isdigit(cinch))
{
cin.putback(cinch);
cin>>n;
sopd.push(n);
}
不太理解其中的putback的意思,于是搜了搜 ,整理一下理解的思路
//百度百科对putbacak函数的解释
putback函数调用形式为cin.putback(ch),
其作用是将前面用get或者getline函数从输入流中读取的字符ch返回到输入流,
插入到当前指针的位置,供后面读取。
cin.putback(c)是将字符c放回到输入流中,这样后面用cin>>n时可以读完整的数字。
例如,输入为56 10 +时。
循环中第一次先读入一个字符c="5",
由于它是数字(isdigit),所以需要先putback,再用cin>>n读,
这样n=56。如果不使用putback,由于5已经被读过了,下面从第二个字符读起,那么n=6,这样就错了。
例如,输入为56 10 +时。
循环中第一次先读入一个字符c="5",
由于它是数字(isdigit),所以需要先putback,再用cin>>n读,这样n=56。如果不使用putback,由于5已经被读过了,下面从第二个字符读起,那么n=6,这样就错了。