Форум программистов, компьютерный форум 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; class A { public: 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; while ((c = getchar()) != EOF) { if (c != ' ') p=0;
C++ Определить, есть ли в строке St изображения нечетных чисел Определить, есть ли в строке St изображения нечетных чисел. подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.09.2014, 18:28     Запись и чтение бинарных файлов. Программа крашится при закрытии консольного окна
Цитата Сообщение от trev Посмотреть сообщение
теперь правильно записываю файл?
Я бы так сделал:
C++
1
2
3
4
5
6
    int length = name.size();
    fout.write((char *)&length, sizeof(length)); // записываем размер строки
    fout.write((char *)name.c_str(), name.size()); // записываем строку
    fout.write((char *)&age, sizeof(age));
    fout.write((char *)&height, sizeof(height));
    fout.close();
Добавлено через 26 минут
Тогда чтение строки, как-то так будет (в итерации):
C++
1
2
3
4
5
6
7
        int length;
        fin.read((char *)&length, sizeof(length)); // читаем размер строки
        char* cstr = new char[length + 1]; // массив под строку
        fin.read((char *)cstr, length); // читаем строку
        cstr[length] = '\0'; // делаем из массива Си строку
        name = cstr; // заносим массив в string 
        delete [] cstr;
Добавлено через 11 минут
И ещё... Чтобы избежать пустого чтения (когда EOF уже считан, а итерация ещё не закончена), проверку на EOF нужно сделать после считывания размера строки.
 
Текущее время: 15:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru