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

Дозапись потоком - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.87
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
24.03.2010, 08:50     Дозапись потоком #1
Есть файл, в нём уже чтото записано, но открытого потока к нему нет. Можно ли открыть поток на дозапись в этот файл? Как?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Зоти Сергей
 Аватар для Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
24.03.2010, 15:28     Дозапись потоком #2
Конечно можно. Например
C++
1
2
3
FILE * Stream = fopen("C:\\Test.txt", "a+");
fprintf(Stream, "%d\n", 10);
fclose(Stream);
a+ добавляет данные в файл, если он существует. И создает его на диске и записывает в него, если файла нет.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
24.03.2010, 19:46     Дозапись потоком #3
или на C++
C++
1
2
3
4
5
6
7
8
9
10
#include <fstream.h>
int main(){
ofstream save("C:\\Test.txt",ios::app);
if(!save)return -1;
save.is_open();
save<<"Добавили в конец файла";
save<<'\n'; //для логики размещения в файле
save.close();
return 0;
}
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.03.2010, 10:18  [ТС]     Дозапись потоком #4
Цитата Сообщение от Genius Ignat Посмотреть сообщение
или на C++
C++
1
2
3
4
5
6
7
8
9
10
#include <fstream.h>
int main(){
ofstream save("C:\\Test.txt",ios::app);
if(!save)return -1;
save.is_open();
save<<"Добавили в конец файла";
save<<'\n'; //для логики размещения в файле
save.close();
return 0;
}
Что менно здесь отвечает за открытие именно на дозапись, а не на перезапись?

Добавлено через 51 секунду
Цитата Сообщение от Зоти Сергей Посмотреть сообщение
Конечно можно. Например
C++
1
2
3
FILE * Stream = fopen("C:\\Test.txt", "a+");
fprintf(Stream, "%d\n", 10);
fclose(Stream);
a+ добавляет данные в файл, если он существует. И создает его на диске и записывает в него, если файла нет.
Но вообще то я хотел потоком (стримом).
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
25.03.2010, 19:03     Дозапись потоком #5
ios::app: Флаг того, что будет до запись в конец.
Зоти Сергей
 Аватар для Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
25.03.2010, 22:57     Дозапись потоком #6
Цитата Сообщение от taras atavin Посмотреть сообщение
Но вообще то я хотел потоком
Ну так.. а это разве не поток?
fopen - открывает файл и возвращает информацию потока ввода-вывода;
fprintf - вывод форматированной строки в поток
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2010, 05:44     Дозапись потоком
Еще ссылки по теме:

C++ Переворот рисунка потоком
C++ WinAPI Дозапись текстофайла
C++ Builder Отрисовка потоком в Canvas
Дозапись exe-файла C++ WinAPI
Дозапись в файл C++

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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
26.03.2010, 05:44  [ТС]     Дозапись потоком #7
C++
1
s<<d;
если d - данные, s связано или с файлом, или с консолью и этот оператор туда выводит, то s - поток вывода. Всё остальное - нет. Даже thread хоть и тоже поток, но не тот. Задача потоком вывода решается та же, что и при любом другом файловом и консольном выводе, но поток допускает "цепную форму"
C++
1
s<<d1<<d2<<d3<<d4;
. И за типами данных следит сам поток, а не я. А ты что предлаешь?
C++
1
2
3
4
fprintf(Stream, "%d", d1);
fprintf(Stream, "%f", d2);
fprintf(Stream, "%d", d3);
fprintf(Stream, "%d\n", d4);
? Или
C++
1
fprintf(Stream, "%d%f%d%f\n", d1, d2, d3, d4);
? Это не потоковые операции.

Добавлено через 1 час 11 минут
Цитата Сообщение от Genius Ignat Посмотреть сообщение
ios::app: Флаг того, что будет до запись в конец.
А так:
C++
1
2
3
4
ofstream s;
s.open("file.txt",ios::app);
s<<d;
s.close();
можно?
Yandex
Объявления
26.03.2010, 05:44     Дозапись потоком
Ответ Создать тему
Опции темы

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