balaji
balaji

Reputation: 1125

how to store the content of variable into const char*?

i have a pointer or variable which stores the address like 0xb72b218 now i have to store this value in to const char*. how i can store it. Thanks in advance. I tried following: suppose i have a pointer variable "ptr" which contains 0xb72b218 value

ostringstream oss;
oss << ptr;
string buf = oss.str();
const char* value = buf.c_str();

but it is more complicated any one know easy way.

Upvotes: 0

Views: 881

Answers (3)

Sriram
Sriram

Reputation: 10558

Have you looked at const_cast? It is a means of adding/removing const-ness from a variable in C++. Take a look here.

Upvotes: 0

Xeo
Xeo

Reputation: 131799

Well... if you really want the address of something in a string, this will do:

#include <stdio.h>
#include <iostream>

int main(){
  char buf[30];
  void* ptr = /*your pointer here*/;
  snprintf(buf,sizeof(buf),"%p",ptr);

  std::cout << "pointer as string: " << buf << "\n";
  std::cout << "pointer as value: " << ptr << "\n";
}

Or if you don't like magic numbers and want your code to work even when 256bit pointers are nothing special anymore, try this:

#include <limits>  // for numeric_limits<T>
#include <stdint.h>  // for intptr_t
#include <stdio.h>  // for snprintf
#include <iostream>

int main(){
  int i;
  int* ptr = &i; // replace with your pointer
  const int N = std::numeric_limits<intptr_t>::digits;
  char buf[N+1]; // +1 for '\0' terminator
  snprintf(buf,N,"%p",ptr);

  std::cout << "pointer as string: " << buf << "\n";
  std::cout << "pointer as value: " << static_cast<void*>(ptr) << "\n";
}

Example on Ideone.

Upvotes: 2

trojanfoe
trojanfoe

Reputation: 122391

OK, presumably there must some additional parameter that tells the function what type of data is actually being passed, but you can do it like this:

extern void afunc(const char *p, int type);

int value = 1234;
afunc((const char *)&value, TYPE_INT);

Upvotes: 0

Related Questions