Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
nchameleon
2 / 2 / 1
Регистрация: 06.04.2010
Сообщений: 161
#1

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

08.04.2011, 17:25. Просмотров 1250. Ответов 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);
Как сделать необходимое преобразование без промежуточных действий?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2011, 17:25     Приведение типов string.size() к (void*)
Посмотрите здесь:

C++ Приведение типов
C++ Приведение указателя на void к другому типу?
Приведение типов. C++
C++ Приведение типов?
C++ Приведение типов.
C++ Приведение типов
C++ Приведение void указателя к определенному типу с сохранением результата
Приведение типов C++
C++ Приведение void* к типу указателя на структуру
Приведение void* указателя к типу C++
Приведение к void C++
Приведение типов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1455 / 822 / 68
Регистрация: 26.03.2010
Сообщений: 2,811
08.04.2011, 17:34     Приведение типов string.size() к (void*) #2
nchameleon, а вы прочитайте про аргументы функций fwrite / fread, сами найдете у себя ошибку.
http://www.cplusplus.com/reference/c...cstdio/fwrite/

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

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

Добавлено через 41 секунду
может как то можно получить адрес переменной длины ?
neske
1455 / 822 / 68
Регистрация: 26.03.2010
Сообщений: 2,811
08.04.2011, 18:37     Приведение типов string.size() к (void*) #4
C++
1
&ddd.size()
- ты пытаешься получить несуществующий адрес. Разве значение ddd.size () у тебя где-то сохранено в памяти? - нет.

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

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

Добавлено через 57 секунд
а получается результат полученной от функции нельзя преобразовать в нужный мне вид
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
08.04.2011, 20:05     Приведение типов string.size() к (void*) #6
nchameleon, кстати, а зачем в данном случае использовать fwrite? Может лучше обойтись fprintf?
Или средствами С++, если уж на то пошло (т.е. если уж ты пишешь не на С, а на С++)?

Добавлено через 2 минуты
Цитата Сообщение от nchameleon Посмотреть сообщение
а получается результат полученной от функции нельзя преобразовать в нужный мне вид
nchameleon, чтобы получить адрес от результата, тебе нужно выделить для него память. Это можно сделать статически (как это ты и сделал), а можно динамически. Вот адрес выделенной памяти и передается в функцию. По другому сделать в принципе нельзя.
Yandex
Объявления
08.04.2011, 20:05     Приведение типов string.size() к (void*)
Ответ Создать тему
Опции темы

Текущее время: 13:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru