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

Запись и чтение бинарных файлов. Программа крашится при закрытии консольного окна - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подскажите пример подключения lib http://www.cyberforum.ru/cpp-beginners/thread1252627.html
Добрый вечер. Можно пример какой-нибудь простенькой программы (например сложение чисел, или вычисление площади треугольника), в которой main.cpp отвечает за ввод и вывод, а в dop.lib реализуется сам...
C++ Перегрузить operator* Подскажите, пожалуйста, как использовать operator* в void main в данной программе по аналогии с operator-> Не разобрался полностью в синтаксисе. #include <iostream> using namespace std; ... http://www.cyberforum.ru/cpp-beginners/thread1252616.html
C++ Вернуть текстовое представление уравнения в виде строки
последний пункт задания лабы: Вернуть текстовое представление уравнения в виде строки (char или wchar_t). уравнение такое (x^2+y^2-4a^2)^3=108a^4y^2
Программа не записывает данные в файл C++
Программа не записывает данные в файл помогите исправить #include<iostream> #include <stdio.h> #include <stdlib.h> #include<iomanip> #include<windows.h> using namespace std; struct stud {
C++ Объясните как работает программа, которая заменяет 2 и больше подряд идущих пробела на один http://www.cyberforum.ru/cpp-beginners/thread1252598.html
Всем доброго времени суток, друзья. Прошу обьяснить мне как работает данная программа, потому как сам не могу додуматься. #include <stdio.h> main () { int c, p; p = 0; ...
C++ Определить, есть ли в строке St изображения нечетных чисел Определить, есть ли в строке St изображения нечетных чисел. подробнее

Показать сообщение отдельно
trev
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 13
08.09.2014, 17:19  [ТС]
нашел на форуме такой вот пост по теме..
Цитата Сообщение от I.M. Посмотреть сообщение
...или извращаться с бинарным файлом и строкой дальше)
при записи данных в файл - перед каждой строкой надо вначале записывать ее длину, а затем только само содержимое строки. также надо использовать не sizeof(std::string), а вызывать метод size() у этой строки.
при чтении из файла - вначале считываете длину будущей строки, создаете временный массив char* соответствующей длины, в него считываете данные из файла и только потом переносите этот массив в нужную std::string...
То есть с записью в файл я, кажется, разобрался :
C++
1
2
3
4
5
6
7
char *cstr = new char[name.length() + 1];
            std::strcpy(cstr, name.c_str());
            fout.write((char *)&cstr, name.size());
            delete[] cstr;
            fout.write((char *)&age, sizeof(age));
            fout.write((char *)&height, sizeof(height));
            fout.close();
а вот с чтением вообще туплю дико уже несколько часов к ряду.. Судя по цитате, нужно считать длинну будущей строки.. а вот как это сделать хз.. =\
пока есть вот такой код по чтению из файла, но он не работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
std::cout << "Данные в файле \"" << file << "\":\n";
            unsigned int kol = 0;
            while (!fin.eof()) {
                char *cstr = new char[name.length() + 1];
                fin.read((char *)&cstr, name.size());
                std::cout << kol + 1 << ") " << cstr;
                fin.read((char *)&age, sizeof(age));
                std::cout << ", возраст " << age;
                fin.read((char *)&height, sizeof(height));
                std::cout << ", рост " << height << '\n';
                kol++;
            }
            fin.close();
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru