Другие языки программирования и технологии

Открывается текстовый файл но не записывается - C++

Использую опенжл, параллельно, по нажатию кнопки, надо создавать разные текстовые файлы и записывать в них информацию, но по нажатию кнопки файл создается и закрывается пустой. При том если выносить создание и запись в мейн, что естественно меня не устраивает, файл создается и записывается корректно.

cyberforum.ru/cpp-beginners/thread2214787.html#post12236651
попробуй асемблер
Роман Палехов
Роман Палехов
11 155
Лучший ответ
Кто-ж так делает - при нажатии кнопки создает и записывает в файл каждый раз...
Представляете что у Вас происходит каждый раз когда юзер нажимает кнопку и что вынуждена делать ОС?

Создайте ofstream file "глобально" (это в духе кода =) или в main и передавайте ссылку.
А при нажатии будет только запись в файл. Без закрытия. Если боитесь, что пропадут данные - ну можно сбрасывать буфер с помощью flush.

UPD: Оказалось, что каждый раз будет новый файл. Кто-ж знал...
=>
У Вас по коду пишется всегда в один и тот-же файл. ios::binary исправьте на ios::text

P.S: Да и там есть над чем поработать и без этого.
Адиль Удашев
Адиль Удашев
84 764
Altyn Gasyr Medical * Как раз таки, надо каждый раз новый файл, т. к. у меня их будет множество
Altyn Gasyr Medical * При обьявлении глобально изменить имя не будет представляться возможным
Адиль Удашев Блин не ios::text, а флаг ios::binary убрать.. Спать пойду =)
ofstream не выбрасывает исключения. Надо проверять состояние потока вызывая file.good() (или может быть file.fail(), я не разбираюсь). Может у вас просто не открывается файл?
Например, если написать:
ofstream file("A:\\.", ios::binary); // тут специально неправильное имя файла
file << "abc";
file.close();
file << "yes";
такой код выполнится без ошибок.
Нафига весь код дал?

ты думаешь
int booltoint(bool a)
{
int retur;
if (a==false) retur = 0;
else retur = 1;
return retur;
}

может вызвать ошибку?

нубяра. лучше займись другим делом

___________________________________

метод write() используй, для binary лучше всего он подходит.
естественно, ты не в курсе как записать двоичные данные через ofstream::write
читай книгу, это базовые знания языка

________
file.write( kek.c_str(), kek.size() );

как то так, смотри по параметрам метода, в соответствии с типом, передай аргументы, если типы разные, преобразуй, размер указывается в байтах.
^^аскаров ^^
^^аскаров ^^
30 074