#include <string>
#include <iostream>

std::string extract(std::string& str, char beg, char end)
{
    std::size_t begPos ;
    if ( (begPos = str.find(beg)) != std::string::npos )
    {
        std::size_t endPos ;
        if ( (endPos = str.find(end, begPos)) != std::string::npos )
        {
            std::string result = str.substr(begPos+1, endPos-begPos-1) ;
            str.erase(begPos, endPos-begPos+1) ;
            return result ;
        }
    }

    return std::string() ;
}

int main()
{
    std::string original("This is the string of text $Iwantthis+$Iwantthistoo text, end of the string.") ;
    std::cout << extract(original, '$', '+') << '\n' ;
    std::cout << extract(original, '$', ' ') << '\n' ;
    std::cout << "Original modified to \"" << original << "\"\n" ;
}

