Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Указатель в строку 
V
    Опции темы
tonchitos
Дата 31.7.2008, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 24.2.2007

Репутация: нет
Всего: 40



Мне надо записать значение указателя в строку, потом его достать, и нормально проинтерпретировать...

то есть естьуказатель на некий объект

MyCl *obj;

есть строка 
CString strExpression


Я могу  значение указателя преобразовать в строку а потом обратно в инт и присвоить указателю? Или он испортица?



--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
Alek86
Дата 31.7.2008, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



можешь


--------------------
user posted image    user posted image
PM MAIL   Вверх
tonchitos
Дата 31.7.2008, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 24.2.2007

Репутация: нет
Всего: 40



Мне вот сказали что лучше так:

union Convert
{
   mycl* x;
   char[4] y;  
};


но нужна проверка тогда что у нас win32 или win 64

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


--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
Lazin
Дата 31.7.2008, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



это будет потенциально опасно, лучше так не делать... но если хочется, то нужно сначала записать значение указателя в переменную достаточного размера(ptrdiff_t), потом сформировать по ней строку, а потом обратно, переменная - указатель...
но только зачем...???
PM MAIL Skype GTalk   Вверх
tonchitos
Дата 31.7.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 24.2.2007

Репутация: нет
Всего: 40



Не очень поняла   smile 
Можно маський пример?

Добавлено через 7 минут и 55 секунд
А что лучше не делать? Юнион?
Или вообще не записывать указатель?



--------------------
– Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил.
PM MAIL   Вверх
Lazin
Дата 31.7.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



а тебе для чего?

Добавлено через 3 минуты и 44 секунды
Код

Class* p;
...
char str[0xff];
ptrdiff_t pval = (ptrdiff_t)p;
_snprintf(a, 0xff, "%d", pval);



как то так, а обратно - нужно распарсить строку и получить число, и записать его в указатель, но за такое могут и уволить smile 
PM MAIL Skype GTalk   Вверх
vinter
Дата 31.7.2008, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Lazin, это че это ты изобразил?
Код

Class* p;
...
stringstream str;

int pval = static_cast<int>(p);
str << pval;
....
//поюзали
...
str >> pval;




--------------------
Мой блог
PM MAIL WWW   Вверх
Lazin
Дата 31.7.2008, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



а на 64х битной платформе?
PM MAIL Skype GTalk   Вверх
vinter
Дата 31.7.2008, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



не, ну насчет ptrdiff_t я согласен. я просто непонял зачем char str[0xff]
и что за манипуляции тут _snprintf(a, 0xff, "%d", pval);


--------------------
Мой блог
PM MAIL WWW   Вверх
UnrealMan
Дата 1.8.2008, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(vinter @  31.7.2008,  21:53 Найти цитируемый пост)
int pval = static_cast<int>(p);

Не static_cast, а reinterpret_cast.

Цитата(Lazin @  31.7.2008,  22:12 Найти цитируемый пост)
а на 64х битной платформе?

Можно подумать, формат %d сочетается с любым возможным ptrdiff_t...

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0491 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.