С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.93
delias
4 / 4 / 0
Регистрация: 16.07.2009
Сообщений: 87
#1

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

28.01.2010, 22:07. Просмотров 6976. Ответов 21
Метки нет (Все метки)

есть файл с текстом:
fstream f("f.txt",ios::in);

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

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

Write из fstream - C++
Здравствуйте!) Не могу понять, как пишет данные в файл функция write( То есть мы с помощью seekp указали позицию в потоке (файле) и...

fstream::tellp() не работает как надо. - C++
#include <iostream> #include <stdlib.h> #include <fstream> using namespace std; int main(int argc, char** argv) { ...

Std::fstream почему функция write принимает параметр char* а не unsigned char* (аля byte*) ? - C++
Ну собственно сабж... std::fstream fs; fs.write((char*)..) В случае бинарного потока я допустим пишу байты функцией write, как...

не работает fstream.h - C++
Всем доброго дня !!! Решил поработать с файлами. В учебнике четко сказанно , что fstream.h не требует iostream.h В...

работает fstream в VC++2010 - C++
скажите пожалуйста библиотечный файл <fstream.h> поддерживает VC++2010? а то почему то даже простой код не работает ! или я может что то...

fstream не работает и чтение и запись - C++
Добрый день! Не пойму, почему введение функции getline становится причиной того, что запись в файл не идет. Если getline убрать, то все...

21
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 81
29.05.2014, 16:39 #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 строку. Это из за одинакового названия??
0
dzrkot
29.05.2014, 16:40
  #17

Не по теме:

0
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 81
29.05.2014, 16:43 #18
Ок буду эксперементировать
0
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,036
29.05.2014, 16:46 #19
Цитата Сообщение от Ринат Посмотреть сообщение
Ок буду эксперементировать
читайте книги
www.cyberforum.ru/cpp-beginners/thread152353.html
0
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 81
29.05.2014, 18:11 #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);
}
0
Max Dark
шКодер самоучка
1852 / 1652 / 603
Регистрация: 09.10.2013
Сообщений: 3,678
Записей в блоге: 6
Завершенные тесты: 2
29.05.2014, 18:22 #21
ifstream::operator>>() читает до первого пробела, используйте getline()
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int read(void) {
    setlocale(LC_ALL,"RUS");
 
    ifstream nazvanie("BOOKINFO.DAT");
    string one,two,three;
    getline(nazvanie,one);
    getline(nazvanie,two);
    getline(nazvanie,three);
    cout<<one;
    cout<<two;
    cout<<three;
    return 0;
}
1
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 81
03.06.2014, 03:10 #22
А с помощью getline(cin.one.nazvanie); можно будет ввести в файл сторку?
0
03.06.2014, 03:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2014, 03:10
Привет! Вот еще темы с ответами:

Функция write open не работает - C++
В общем вот алгорифм #include &lt;iostream&gt; //Все нужные библиотеки есть int main() { int id; char buffer; ...

При работе fstream указатель типа pos_type (позиции в файле) не работает - C++
Разбираю код с сайта: http://valera.asf.ru/cpp/book/c20.html Компилятор Билдер-6 ругается. когда я создаю консольное приложение и...

Как проверить, открылся ли fstream? - C++
Nado otkrit file i proverit otkrilsa li on ili net. Podskazhite kakim obrazom eto mozhno sdelat? Zaranee spasibo.

<fstream> как копировать файлы? - C++
Какой функцией можно скопировать нужный файл?


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.