Return all words which have their reverse present in a string
I have observed a few things that may help you improve your code.

Use library functions

One of the things the code does is to separate words in the input.  However, this could be done more easily by using a std::stringstream:

stringstream in(test);
string word;
while (in &gt;&gt; word) {
    // test each word
}


Use more whitespace to enhance readability of the code

Instead of crowding things together like this:

cout&lt;&lt;"( "&lt;&lt;rev&lt;&lt;","&lt;&lt;temp&lt;&lt;" ), ";


most people find it more easily readable if you use more space:

cout &lt;&lt; "( " &lt;&lt; rev &lt;&lt; ", " &lt;&lt; word &lt;&lt; " ) ";


Only print words once

Right now, with this input string:

string test="Sachin tendulkar is si is the best tseb eht nihcaS si";


The word "is" gets reported twice.


  {( is,si ), ( best,tseb ), ( the,eht ), ( Sachin,nihcaS ), ( is,si ), }


One way to handle that is to note when each word is actually reported and to only do it once.  Here's one way to do that:

stringstream in(test);
enum state { DETECTED=1, REPORTED };
unordered_map &lt;string, state&gt; binMap;

string word;
cout &lt;&lt; "{";
while (in &gt;&gt; word) {
    string rev{word.rbegin(), word.rend()};
    if (binMap[rev] == DETECTED &amp;&amp; binMap[word] != REPORTED) {
        cout &lt;&lt; "( " &lt;&lt; rev &lt;&lt; ", " &lt;&lt; word &lt;&lt; " ) ";
        binMap[word] = REPORTED;
    } else {
        binMap[word] = DETECTED;
    }
}
cout &lt;&lt; "}\n";