Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
2 / 2 / 5
Регистрация: 06.04.2010
Сообщений: 176

Приведение типов string.size() к (void*)

08.04.2011, 17:25. Показов 2130. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день помогите пожалуста записать значение возвращаемое string.size() в фаил
C++
1
2
3
4
5
6
7
8
9
FILE * fp;
fp = fopen("C:\\T01.txt","rb");
std::string ddd = "___ПРИВЕД___";
fwrite(ddd.size(),sizeof(int),1,fp);   // Ошибка: error C2664: fwrite: невозможно преобразовать параметр 1 из 'unsigned int' в 'const void *'
fwrite(ddd.length(),sizeof(int),1,fp); // Ошибка:
// если сделать
int k = ddd.size();
fwrite(&k,sizeof(int),1,fp); // работает
fclose(fp);
Как сделать необходимое преобразование без промежуточных действий?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.04.2011, 17:25
Ответы с готовыми решениями:

Что означает запись типа template<typename _Ty, size_t size> void foo(_Ty(&param)[size])?
Что означает такая запись(какой тип передается, что-то вроде ссылки на массив или что-нибудь ещё?): &lt;typename _Ty, size_t size&gt; ...

Приведение к void
Доброй ночи! Просматривая код некоторой программы, обнаружил конструкцию следующего вида: void function(char a, char *p) { ...

Приведение void* указателя к типу
struct tParamStruct { const char* Result; }; tParamStruct ParamStruct; void show(void *AdressPS) { // ????????

5
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
08.04.2011, 17:34
nchameleon, а вы прочитайте про аргументы функций fwrite / fread, сами найдете у себя ошибку.
http://www.cplusplus.com/refer... io/fwrite/

Первый аргумент - адрес, а не само значение.
0
2 / 2 / 5
Регистрация: 06.04.2010
Сообщений: 176
08.04.2011, 18:28  [ТС]
так я и не могу получить адрес в выражении
fwrite(&ddd.size(),sizeof(int),1,fp); // ошибка

и не пойму как привести к правильному виду.

Добавлено через 41 секунду
может как то можно получить адрес переменной длины ?
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
08.04.2011, 18:37
C++
1
&ddd.size()
- ты пытаешься получить несуществующий адрес. Разве значение ddd.size () у тебя где-то сохранено в памяти? - нет.

А чем не нравится вариант, который приведен у тебя?
C++
1
2
int size = ddd.size ();
fwrite(&size, sizeof(int), 1, fp);
1
2 / 2 / 5
Регистрация: 06.04.2010
Сообщений: 176
08.04.2011, 18:54  [ТС]
дополнительное действие, получается загромождение когда при чтении

вообще я пишу функции сохранения класса в котором хранятся данные в виде нескольких таблиц

Добавлено через 57 секунд
а получается результат полученной от функции нельзя преобразовать в нужный мне вид
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
08.04.2011, 20:05
nchameleon, кстати, а зачем в данном случае использовать fwrite? Может лучше обойтись fprintf?
Или средствами С++, если уж на то пошло (т.е. если уж ты пишешь не на С, а на С++)?

Добавлено через 2 минуты
Цитата Сообщение от nchameleon Посмотреть сообщение
а получается результат полученной от функции нельзя преобразовать в нужный мне вид
nchameleon, чтобы получить адрес от результата, тебе нужно выделить для него память. Это можно сделать статически (как это ты и сделал), а можно динамически. Вот адрес выделенной памяти и передается в функцию. По другому сделать в принципе нельзя.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.04.2011, 20:05
Помогаю со студенческими работами здесь

Приведение указателя на void к другому типу?
в поиске смотрел - не помогло! Возникла проблемка: В книге сказано, что указателю на void можно присваивать все типы указателей без...

Приведение void* к типу указателя на структуру
Тема обсуждалась здесь, но решения так и нет нормального Есть два (и более, хоть до 20) линейных списков и функция обхода списка В...

Приведение void указателя к определенному типу с сохранением результата
Есть функция funс(void *pointer, char type) { ... } Нужно чтобы в данной функции этот указатель приводился к определенному типу...

Приведение типов. String to char
Делаю ОПН(обратная польская нотация). У меня есть метод priority, смотрим ниже. public static int priority(char op) { switch...

Приведение типов Integer к String
Как перевести в программе один тип данных в другой? Например в начале программы объявляем dim a as integer, а в середине программы нужно...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru