Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 05.12.2017
Сообщений: 9
1

Каст this к std::string

21.09.2018, 19:01. Показов 1040. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возможно ли скастовать указатель this к std::string так, что бы в std::string оказался адрес текущего объекта в символьном представлении
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2018, 19:01
Ответы с готовыми решениями:

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка...

Запрошено преобразование от ‘const std::string*’ к нескалярному типу ‘std::string’
private: std::string firstName; }; std::string ClientData::getFirstName() const{ ...

Корректен ли каст из string в wstring?
Доброго вечера. Вот кусок кода: template&lt; typename char_type &gt; string_t&lt;char_type&gt; make_string(...

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же...

9
5232 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
21.09.2018, 19:08 2
возможно, только зачем?
1
0 / 0 / 0
Регистрация: 05.12.2017
Сообщений: 9
21.09.2018, 19:21  [ТС] 3
Цитата Сообщение от Kastaneda Посмотреть сообщение
возможно, только зачем?
Сие есть лишь академический интерес)
0
900 / 477 / 93
Регистрация: 10.06.2014
Сообщений: 2,698
21.09.2018, 19:31 4
Kastaneda,
А это разве не UB? Strict aliasing вроде как нарушается

Добавлено через 1 минуту
К тому же в string в качестве поля есть не только указатель на массив символов но и другие вспомогательные поля.
Как вообще должен выглядеть кастуемый объект?
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
21.09.2018, 20:11 5
Цитата Сообщение от CDECLARATE Посмотреть сообщение
Возможно ли скастовать указатель this к std::string так, что бы в std::string оказался адрес текущего объекта в символьном представлении
В std::string это можно записать, а кастовать нужно к std::size_t

Что-то наподобие

C++
1
2
3
4
int a;
std::stringstream str_stream;
str_stream << std::hex << reinterpret_cast<std::size_t>(&a);
std::string my_string(str_stream.str());
Добавлено через 2 минуты
+ добавить заголовок
C++
1
#include <sstream>
1
Неэпический
18099 / 10685 / 2061
Регистрация: 27.09.2012
Сообщений: 26,897
Записей в блоге: 1
21.09.2018, 20:20 6
Цитата Сообщение от TRam_ Посмотреть сообщение
а кастовать нужно к std::size_t
uintptr_t
Цитата Сообщение от TRam_ Посмотреть сообщение
Что-то наподобие
Чем не угодил вариант
C++
1
str_stream << static_cast<void*>(&a);//или просто &a, если не брать в расчет перегрузки для char *
???
0
TRam_
21.09.2018, 20:39
  #7

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
Чем не угодил вариант
Только тем, что о нём не вспомнил. Передать непосредственно &a конечно намного короче и ближе к стандарту.

0
Комп_Оратор)
Эксперт по математике/физике
8950 / 4704 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
22.09.2018, 00:30 8
Цитата Сообщение от CDECLARATE Посмотреть сообщение
Возможно ли скастовать указатель this к std::string так, что бы в std::string оказался адрес текущего объекта в символьном представлении
Странная смесь мягкого с холодным. Просто адрес, это целое без знака и его можно конвертировать. Но при чём тут this в частности и указатель определённого типа вообще? this это определённый тип и он не может быть void * . При конвертации в цепочку байт информация о типе теряется. Адрес это координата начала объекта, а тип - всё остальное (размер, формат, операции, инвариант/ы). Но есть и хорошая новость, - можно слово "this" сконвертировать в строку и сохранить его в, например json подобном формате с адресом (через двоеточие - пара ключ/значение). Ключ у всех будет одинаковый. И это имеет свои преимущества. Не нужно париться с вариантами.
0
Вездепух
Эксперт CЭксперт С++
12769 / 6651 / 1791
Регистрация: 18.10.2014
Сообщений: 16,814
22.09.2018, 03:00 9
Цитата Сообщение от CDECLARATE Посмотреть сообщение
Возможно ли скастовать указатель this к std::string так, что бы в std::string оказался адрес текущего объекта в символьном представлении
К "кастованию" это не имеет никакого отношения.
0
4001 / 2548 / 428
Регистрация: 09.09.2017
Сообщений: 11,297
22.09.2018, 09:24 10
А typeid(x).name() не устроит?
0
22.09.2018, 09:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2018, 09:24
Помогаю со студенческими работами здесь

Реализация класса MyString. Стандартная библиотека, std::string, std::vector
как добавить реализацию конкатенации строк через перегрузку оператора &quot;+=&quot; в классе MyString и...

Операция std::cout для Объекта типа std::string
Кто детально объяснит почему не выводит ? Дает вот так &quot;Отсутствует оператор &quot;&lt;&lt;&quot;, соответствующий...

Передача функции указатель на элемент std::vector<std::string>
Доброй ночи тем, кому не спится (или живет в другом часовом поясе:p)! Есть функция, требующая в...

No match for 'operator<' (operand types are 'std::__cxx11::string {aka std::__c
Имеем следующий код: #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;vector&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru