Well, data.str().c_str() yields a char const* but your function Printfunc() wants to have char*s. Based on the name, it doesn’t change the arguments but merely prints them and/or uses them to name a file, in which case you should probably fix your declaration to be
void Printfunc(int a, char const* loc, char const* stream)
The alternative might be to turn the char const* into a char* but fixing the declaration is preferable:
Printfunc(num, addr, const_cast
string::c.str() returns a string of type const char * as seen here
A quick fix: try casting printfunc(num,addr,(char *)data.str().c_str());
While the above may work, it is undefined behaviour, and unsafe.
Here’s a nicer solution using templates:
char * my_argument = const_cast