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

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

Войти
Регистрация
Восстановить пароль
 
 
Асурус
2 / 2 / 1
Регистрация: 27.07.2012
Сообщений: 40
#1

Можно ли записывать объекты класса string в память, чтоб потом их прочитать? - C++

15.05.2013, 01:16. Просмотров 602. Ответов 19
Метки нет (Все метки)

Создал класс, который содержит много объектов класса string, но что то не так как надо. В debug режиме удаётся прочитать и вывести, но компилятор после этого выдаёт что-то нехорошее. В режиме release даже не выводит на экран строки. Можно ли вообще объекты класса string просто записать как outfile.write(reinterpret_cast<char*>(&dummyobj), sizeof(dummyobj)), а потом прочитать как infile.read(reinterpret_cast<char*>(&dummyobj), sizeof(dummyobj))?

Добавлено через 13 минут
Компилятор совсем странно себя ведёт. Сейчас в release всё нормально, а вот debug застревает. Я пытаюсь прочитать данные после записи, в новой программе.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 01:16     Можно ли записывать объекты класса string в память, чтоб потом их прочитать?
Посмотрите здесь:
C++ Можно ли динамически выделить память под массив указателей, на объекты класса?
Разработка класса String, на основании которого можно создавать объекты типа "строка символов" C++
Разработать другую версию предыдущей задачи используя объекты класса String C++
Можно ли использовать объекты одного класса в другом? C++
C++ Можно ли выделять память под объект класса с помощью функций calloc, malloc или realloc?
C++ Классы и объекты в С++, компонента класса и экземпляр класса
как вытащить из for(...){...; b=5;...} переменную b с новым значением чтоб потом ее использовать C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1446 / 1175 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
15.05.2013, 01:25     Можно ли записывать объекты класса string в память, чтоб потом их прочитать? #2
Цитата Сообщение от Асурус Посмотреть сообщение
Можно ли вообще объекты класса string просто записать как outfile.write(reinterpret_cast<char*>(&dummyobj), sizeof(dummyobj)), а потом прочитать как infile.read(reinterpret_cast<char*>(&dummyobj), sizeof(dummyobj))?
Нет, нельзя, записывай каждую строку отдельно.
stima
457 / 306 / 24
Регистрация: 22.03.2011
Сообщений: 995
Завершенные тесты: 2
15.05.2013, 01:28     Можно ли записывать объекты класса string в память, чтоб потом их прочитать? #3
C++
1
str.size() * sizeof(std::string::value_type); //str.size() * sizeof(char)
Асурус
2 / 2 / 1
Регистрация: 27.07.2012
Сообщений: 40
15.05.2013, 01:31  [ТС]     Можно ли записывать объекты класса string в память, чтоб потом их прочитать? #4
Во втором ответе почти ничего не понял, но спасибо за труды.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
15.05.2013, 12:27     Можно ли записывать объекты класса string в память, чтоб потом их прочитать? #5
stima, sizeof(char) равен 1 по определению.
stima
457 / 306 / 24
Регистрация: 22.03.2011
Сообщений: 995
Завершенные тесты: 2
15.05.2013, 13:26     Можно ли записывать объекты класса string в память, чтоб потом их прочитать? #6
2Tulosba И?)) Есть такое понятие лучше явное чем не явное.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
15.05.2013, 13:43     Можно ли записывать объекты класса string в память, чтоб потом их прочитать? #7
stima, явное умножение на 1 лучше, чем отсутствие этого умножения?
stima
457 / 306 / 24
Регистрация: 22.03.2011
Сообщений: 995
Завершенные тесты: 2
15.05.2013, 13:57     Можно ли записывать объекты класса string в память, чтоб потом их прочитать? #8
умножение на sizeof(char) лучше чем без, а вдург завтра выйдет стандарт говорящий что char может быть от 1 до 3?)
Croessmah
15.05.2013, 13:59
  #9

Не по теме:

Цитата Сообщение от stima Посмотреть сообщение
стандарт говорящий что char может быть от 1 до 3?)
не волнуйтесь - не выйдет

Цитата Сообщение от Tulosba Посмотреть сообщение
явное умножение на 1 лучше, чем отсутствие этого умножения?
Скорее всего это просто будет вырезано компилятором как рудимент

Tulosba
15.05.2013, 14:07
  #10

Не по теме:

Цитата Сообщение от stima Посмотреть сообщение
а вдург завтра выйдет стандарт говорящий что char может быть от 1 до 3?)
главное чтоб не 0.5

Асурус
2 / 2 / 1
Регистрация: 27.07.2012
Сообщений: 40
15.05.2013, 23:00  [ТС]     Можно ли записывать объекты класса string в память, чтоб потом их прочитать? #11
А объект класса string вообще в память можно записать?

Добавлено через 51 секунду
Я имею ввиду, чтобы потом, при новом запуске программы считать его без проблем?
stima
457 / 306 / 24
Регистрация: 22.03.2011
Сообщений: 995
Завершенные тесты: 2
15.05.2013, 23:40     Можно ли записывать объекты класса string в память, чтоб потом их прочитать? #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <string>
#include <fstream>
#include <iostream>
 
int main()
{
    std::fstream fs;
    std::string str = "Data";
 
    fs.open("file.txt", std::fstream::out);
    if (!fs.is_open())
         return 1;
  
    fs << str;
 
    str.clear();
    fs.close();
 
    fs.open("file.txt", std::fstream::in);
    if (!fs.is_open())
         return 1;
    
    fs >> str;
    std::cout << str << std::endl;
    
    return 0;
}
Асурус
2 / 2 / 1
Регистрация: 27.07.2012
Сообщений: 40
15.05.2013, 23:56  [ТС]     Можно ли записывать объекты класса string в память, чтоб потом их прочитать? #13
Да, это всё понятно, но только ничего не работает, если например взять другой объект класса string, не тот, который использовали для записи. Так же будет, если запустить программу и не записывая, считать данные. У меня никак не получалось прочитать информацию, работало только до первых трёх символов, я и обычно использую не текстовое сохронение, а бинарное.
stima
457 / 306 / 24
Регистрация: 22.03.2011
Сообщений: 995
Завершенные тесты: 2
16.05.2013, 00:14     Можно ли записывать объекты класса string в память, чтоб потом их прочитать? #14
Я не телепат код в студию
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2013, 01:06     Можно ли записывать объекты класса string в память, чтоб потом их прочитать?
Еще ссылки по теме:
C++ Задача : сохранить несколько чисел в файле и потом их прочитать
Методы класса, как лучше записывать C++
Как из массива записать объекты в файл, а потом из файла в другой массив ? C++
C++ Память под объекты через new
Динамичная память под объекты C++

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

Или воспользуйтесь поиском по форуму:
Асурус
2 / 2 / 1
Регистрация: 27.07.2012
Сообщений: 40
16.05.2013, 01:06  [ТС]     Можно ли записывать объекты класса string в память, чтоб потом их прочитать? #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "stdafx.h"
#include <string>
#include <fstream>
#include <iostream>
 
int main()
{
    std::fstream fs;
    std::string str = "Data", str2;
 
    fs.open("file.txt", std::fstream::out);
    if (!fs.is_open())
         return 1;
  
    fs << str;
 
    str.clear();
    fs.close();
 
    fs.open("file.txt", std::fstream::in);
    if (!fs.is_open())
         return 1;
    
    fs >> str2;
    std::cout << str << std::endl;
    
    system("pause");
    return 0;
}
Yandex
Объявления
16.05.2013, 01:06     Можно ли записывать объекты класса string в память, чтоб потом их прочитать?
Ответ Создать тему
Опции темы

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