When you post, there are posting guidelines, including how to post code. READ THEM PLEASE.
They're not easy to miss.

istringstream is(XX) creates an istringstream object named is, using a constructor that takes an XX as its argument, so it creates an istringstream from an XX.

if(Exr.at(i)=='(') p++;
The brackets may be confusing you; let's add some space to clarify:
if(    Exr.at(i)  ==  '('    ) p++;
So this calls Exr.at, passing in i, which returns a character, which the == compares with an open bracket. So this appears to be doing some kind of analysis of nested expressions where brackets are used for nesting.
gabuchia like this