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

Как работает write в fstream? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.93
delias
4 / 4 / 0
Регистрация: 16.07.2009
Сообщений: 87
28.01.2010, 22:07     Как работает write в fstream? #1
есть файл с текстом:
fstream f("f.txt",ios::in);

надо его разделить его на части по сколько-то байт (переменная piece)
создаю массив для буффера:
char * buffer;
buffer = new char [piece];

далее выполняю f.write (buffer,piece); чтобы считать из файла данные и записать их в массив buffer, однако при отладке смотрю что в buffer никаких данных не добавляется, что-то типа:
buffer 0x00347670 "ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН" char *
собсно вопрос: как же мне считать данные чтобы их потом поместить в другой файл?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2010, 22:07     Как работает write в fstream?
Посмотрите здесь:

<fstream> как копировать файлы? C++
fstream::tellp() не работает как надо. C++
Как проверить, открылся ли fstream? C++
C++ fstream не работает и чтение и запись
C++ работает fstream в VC++2010
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ggmann
 Аватар для ggmann
20 / 20 / 1
Регистрация: 06.10.2008
Сообщений: 173
28.01.2010, 22:44     Как работает write в fstream? #2
вот пример как копировать из файла в файл, может это тебе поможет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <fstream>
#include <iostream>
#include  <string>
 
using namespace std;
 
int main(){
    ifstream in ("Scopy.cpp");     //источник
    ofstream out ("Scopy2.cpp"); //целевой файл
    string s, line;   //строки для записи инфы из файла
    
    while(getline(in,line))
    s+=line + "\n";
    out << s;     
 
    system("Pause");
}
delias
4 / 4 / 0
Регистрация: 16.07.2009
Сообщений: 87
29.01.2010, 00:16  [ТС]     Как работает write в fstream? #3
да не, спасибо но это не то что надо

Добавлено через 46 минут
угу, понял что всё правильно в переменную заносится, видимо побитово оно так и должно выглядеть. в общем делю текстовый файл в результате образуется несколько файлов с такими символами.
дайте подсказку, как же поделить, чтобы сохранился исходный текст (разнести его по разным файлам)
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
29.01.2010, 04:59     Как работает write в fstream? #4
C++
1
ios::binary
нужно добавить

Цитата Сообщение от delias
чтобы считать из файла данные и записать их в массив buffer
C++
1
f.getline(buffer, piece);
write - это записать в файл
delias
4 / 4 / 0
Регистрация: 16.07.2009
Сообщений: 87
29.01.2010, 15:45  [ТС]     Как работает write в fstream? #5
спасибо, вопрос решен
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 77
29.05.2014, 15:50     Как работает write в fstream? #6
Здравствуйте, у меня возник вопрос по поводу fstream , тут такой вопрос как создать просто элементарно файл? и записать в него хотя бы одно слово?? к примеру
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <fstream>
using namespace std;
 
ofstream file_object("FILENAME.EXT");
int main(void)
 
{
 
   ofstream book_file("BOOKINFO.DAT");
   book_file << "Учимся программировать на языке C++, " << "Вторая редакция" << endl;
   book_file << "Jamsa Press" << endl;
   book_file << "22.95" << endl;
}
Вот в этом коде я так понял создается ofstream file_object("FILENAME.EXT"); те имя файла далее в него записывается book_file?? те там будет написано в самом файле Учимся программировать на языке С++, далее jamsa Press и 22.95?
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
29.05.2014, 15:54     Как работает write в fstream? #7
в чём вопрос? вы на него сами ответили...
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 77
29.05.2014, 15:57     Как работает write в fstream? #8
Те по факту я хочу создать програмку в которой я буду писать любой слово и оно будет сохр в этом файле те в формате TXT, примерно я это представляю так:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;
 
int main()
{setlocale(LC_ALL,"RUS");
char Nazvanie[100];
 
cout<<"Введите название"<<endl;
cin>>Nazvanie;
Далее после ввода массива данных как сделать так чтобы он сохр в файле??

Добавлено через 1 минуту
Да но он не рабочий в кампиляторе ругается на сам void
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
29.05.2014, 16:00     Как работает write в fstream? #9
Цитата Сообщение от Ринат Посмотреть сообщение
Далее после ввода массива данных как сделать так чтобы он сохр в файле??
ну давайте подумаем вместе, если код ниже создает поток и запсиывает в файл(кстате используйте тэги)
Цитата Сообщение от Ринат Посмотреть сообщение
ofstream file_object("FILENAME.EXT");
C++
1
2
3
4
5
6
7
int main(void)
{
ofstream book_file("BOOKINFO.DAT"); // создаем выходной поток
book_file << "Учимся программировать на языке C++, " << "Вторая редакция" << endl;//отправляем инфу в файл
book_file << "Jamsa Press" << endl;
book_file << "22.95" << endl;
}
то вероятнее всего вам надо сделать тоже самое=)

Добавлено через 1 минуту
Цитата Сообщение от Ринат Посмотреть сообщение
Да но он не рабочий в кампиляторе ругается на сам void
ну это особенность компилятора, уберите void =)
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 77
29.05.2014, 16:04     Как работает write в fstream? #10
C int я уже пробовал но фишка в том а где сам файл создается? как его найти?))

Добавлено через 1 минуту
Ну или как вариант как прописать место где он должен создаваться? в стиле прописать путь где он будет находится:C:/document and setings/may files/
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
29.05.2014, 16:07     Как работает write в fstream? #11
Цитата Сообщение от Ринат Посмотреть сообщение
C int я уже пробовал но фишка в том а где сам файл создается? как его найти?))
гыгы)) можно через поиск, а можно в каталоге проекта посмотреть, он там по-умолчанию если путь не указан полностью=))

Добавлено через 1 минуту
Цитата Сообщение от Ринат Посмотреть сообщение
в стиле прописать путь где он будет находится:C:/document and setings/may files/
только там вроде // должны быть под винду или \\ уже не помню в зав от ОС

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <fstream>
using namespace std;
int main()
  {
  ofstream o("D:\\asdtexttest.txt");
  return 0;
  }
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 77
29.05.2014, 16:14     Как работает write в fstream? #12
Я нашел файл) BOOKINFO.DAT через поиск.

Добавлено через 2 минуты
Цитата Сообщение от dzrkot Посмотреть сообщение
ofstream o("D:\\asdtexttest.txt");
а что означает после fstream---> "o"?
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
29.05.2014, 16:24     Как работает write в fstream? #13
Цитата Сообщение от Ринат Посмотреть сообщение
а что означает после fstream---> "o"?
просто название для потока
чтобюы записать что-либо в этот файл пишите потом
C++
1
o<<"ляляля на ромашковом поле";
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 77
29.05.2014, 16:31     Как работает write в fstream? #14
те благодоря "о" можно управлять потоками? это как переменная к которой можно обращатся?
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
29.05.2014, 16:33     Как работает write в fstream? #15
Цитата Сообщение от Ринат Посмотреть сообщение
те благодоря "о" можно управлять потоками? это как переменная к которой можно обращатся?
почитайте лучше что -нибудь, могу порекомендовать.
С.Прата глава 18 файловый Ввод/вывод
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 77
29.05.2014, 16:39     Как работает write в fstream? #16
Ок прочитаю, Вот проэксперементировал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <fstream>
using namespace std;
 
ofstream file_object("FILENAME.EXT");
 
int main(void)
{setlocale(LC_ALL,"RUS");
char nazvanie[100];
ofstream nazvanie("BOOKINFO.DAT"); // создаем выходной поток
cin>>nazvanie;
 
 
cout<<"А вот и название!  "<<nazvanie<<endl;
}
ругается на 4 строку. Это из за одинакового названия??
dzrkot
29.05.2014, 16:40
  #17

Не по теме:

Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 77
29.05.2014, 16:43     Как работает write в fstream? #18
Ок буду эксперементировать
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
29.05.2014, 16:46     Как работает write в fstream? #19
Цитата Сообщение от Ринат Посмотреть сообщение
Ок буду эксперементировать
читайте книги
Литература C++
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2014, 18:11     Как работает write в fstream?
Еще ссылки по теме:

C++ Функция write open не работает
не работает fstream.h C++
При работе fstream указатель типа pos_type (позиции в файле) не работает C++

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

Или воспользуйтесь поиском по форуму:
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 77
29.05.2014, 18:11     Как работает write в fstream? #20
Решил пока не замарачиваться по поводу ввода данных с клавиатуры, задал другую цель:
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
30
#include <iostream>
#include <fstream>
using namespace std;
int write(void)
{setlocale(LC_ALL,"RUS");
ofstream nazvanie("BOOKINFO.DAT"); // создаем выходной поток
nazvanie<<"Парам Пам пам"<<endl;
nazvanie<<"Парара"<<endl;
nazvanie<<"дададда"<<endl;
 
}
 
int read(void)
{setlocale(LC_ALL,"RUS");
ifstream nazvanie("BOOKINFO.DAT");
char one[100],two[100],free[100];
nazvanie>>one;
nazvanie>>two;
nazvanie>>free;
cout<<one;
cout<<two;
cout<<free;
}
int main()
{
char nazvanie[100];
read(nazvanie);
return(0);
 
}
По факту это ввод и вывод данных, но ругается на int во второй функции. С чем это связанно?

Добавлено через 6 минут
По поводу второй функции разобрался. Там возвращается значение те надо ставить не (void) а (int) далее ругается на основную функцию
C++
1
2
3
4
5
6
7
int main()
{
char nazvanie[100];
read(nazvanie);
return(0);
 
}
Добавлено через 48 секунд
А именно на read(nazvanie); хотя там вроде все верно написано.

Добавлено через 19 секунд
А именно на read(nazvanie); хотя там вроде все верно написано.

Добавлено через 20 минут
Вот вроде доделал но не показывает третью строку:
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
30
31
32
33
#include <iostream>
#include <fstream>
using namespace std;
 
 
int read(void)
{setlocale(LC_ALL,"RUS");
 
ifstream nazvanie("BOOKINFO.DAT");
char one[100],two[100],free[100];
nazvanie>>one;
nazvanie>>two;
nazvanie>>free;
cout<<one;
cout<<two;
cout<<free;
}
 
int write(void)
{setlocale(LC_ALL,"RUS");
ofstream nazvanie("BOOKINFO.DAT");
nazvanie<<"Ляля тополя"<<endl;
nazvanie<<"Пирожки с катятами"<<endl;
nazvanie<<"Да буть что будет"<<endl;
 
}
 
int main()
{
    write();
    read();
    return(0);
}
именно nazvanie<<"Да буть что будет"<<endl;

Добавлено через 25 минут
Решил этот вопрос, каждое слово непрерывно должно быть иначе, те по факту каждый массив это одно слово:
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
30
31
32
33
#include <iostream>
#include <fstream>
using namespace std;
 
 
int read(void)
{setlocale(LC_ALL,"RUS");
 
ifstream nazvanie("BOOKINFO.DAT");
char one[100],two[100],free[100];
nazvanie>>one;
nazvanie>>two;
nazvanie>>free;
cout<<one<<endl;
cout<<two<<endl;
cout<<free<<endl;
}
 
int write(void)
{setlocale(LC_ALL,"RUS");
ofstream nazvanie("BOOKINFO.DAT");
nazvanie<<"Ляля ";
nazvanie<<"Пирожки ";
nazvanie<<"Да ";
 
}
 
int main()
{
    write();
    read();
    return(0);
}
Yandex
Объявления
29.05.2014, 18:11     Как работает write в fstream?
Ответ Создать тему
Опции темы

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