Member 13277493 Ответов: 2

Как сохранить адрес переменной в строке?


Я хочу преобразовать указатель int* в строковый тип.
<pre>#include <iostream>
#include <string>

int main(){
  int a=7;
  const int *ptr=&a;
  std::string address_a=static_cast<const int*>(ptr);
  std::cout<<address_a<<std::endl;
}




Что я уже пробовал:

I tried also stringstream aproach but I didn't reach a result

Rick York

Вы уверены, что это то, что вы действительно хотите сделать? Я спрашиваю, потому что адрес данных в одном процессе не имеет никакой действительности ни в одном другом процессе. Кроме того, если бы вы поместили данные в общую память, два разных процесса вряд ли получили бы один и тот же адрес для одних и тех же данных.

Итак, предположим, что у вас есть адрес ваших данных в строке. Что ты собираешься с ним делать дальше?

2 Ответов

Рейтинг:
6

CPallini

Что плохого в подходе stringstrem?
Попробуй:

#include <iostream>
#include <sstream>
#include <string>

int main(){
  int a=7;
  const int *ptr=&a;

  std::ostringstream oss;
  oss  << ptr;
  std::string address_a = oss.str();
  std::cout<<address_a<<std::endl;
}


Member 13277493

Спасибо! Мой подход к stringstream был другим, я не знал о функции str (), я должен был хорошо изучить stringstream, прежде чем использовать его.

CPallini

Добро пожаловать.

Рейтинг:
12

Richard MacCutchan

Вы не можете привести число к строке. Вам нужно использовать метод печати, чтобы преобразовать его. Вы можете сделать это с помощью cout или с помощью типа stringstream.

std::cout << ptr << endl;


Member 13277493

Мне нужно это преобразование для создания моей хэш-функции, но если это невозможно, то я подумаю о другой функции хэширования, спасибо!

Richard MacCutchan

Мой ответ объясняет, как вы мочь перевести его. Чего ты не понимаешь?

Member 13277493

Извините, я неправильно понял ответ. Я постараюсь и посмотрю, не возникнут ли какие-нибудь проблемы.

Richard MacCutchan

Нам было бы полезно помочь вам, если бы вы объяснили, что вы пытаетесь сделать.

Member 13277493

Я просто хотел построить хэш-функцию для узлов связанного списка, которая принимала бы в качестве входных данных их адреса и давала мне индекс хэш-таблицы

Richard MacCutchan

Поскольку все адреса будут уникальными, вам не нужно будет их хэшировать. На самом деле хеширование теоретически может привести к дублированию значений.

Member 13277493

Я хочу использовать его для обнаружения цикла в связанном списке

Richard MacCutchan

Затем, как я уже сказал, просто используйте адреса узлов, так как все они будут уникальными.