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

Передача потока по параметру функции - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.81
oinari
 Аватар для oinari
5 / 5 / 0
Регистрация: 18.10.2009
Сообщений: 69
03.12.2010, 23:31     Передача потока по параметру функции #1
Доброго времени суток.
Есть пара вопросов

Допустим у нас имеется функция открытия файла:

C++
1
2
3
4
5
6
7
8
9
10
int open_file()
{
   char file_name[50];
   cin >> file_name;
   ifstream file_obf(file_name); //communication stream output with a file
   if(file_obf.is_open()) cout << "The stream is successfully connected with a file.\n";
   //работаем с ним если открылся
   file_obf.close();  //closing stream
   return 1;
}
и чтобы лишний раз не открывать файл в новой функции, где мы будем также с ним работать,
я хочу передать в параметрах сам поток.

вот пример:

C++
1
2
3
4
5
6
7
8
9
RemoveSLCom(file_obf);
//--------------------------------
int RemoveSLCom(ifstream proc_file)
{
    if(proc_file.is_open())     cout <<"1";
    else cout << "0";
    proc_file.close();  //closing stream
    return 1;
}
Компилятор выдал:
File3.cpp(29): parsing: int open_file()
File3.cpp(55): decision to instantiate: ifstream::basic_ifstream(ifstream &)
--- Resetting parser context for instantiation...
1. Как это осуществить или я могу заного во второй ф-ии связать уже новый поток с этим же файлом.
2. Строка
C++
1
cin >> file_name;
как сделать возможным ввод имени файла с пробелами?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
04.12.2010, 00:00     Передача потока по параметру функции #2
Передавай параметр по ссылке или указателем.
В твоем случае, лучше по ссылке.

C++
1
2
int RemoveSLCom(ifstream &proc_file)
...
oinari
 Аватар для oinari
5 / 5 / 0
Регистрация: 18.10.2009
Сообщений: 69
04.12.2010, 10:20  [ТС]     Передача потока по параметру функции #3
lemegeton, все, спасибо, заработало)

Вот если я работаю со ссылкой proc_file, мне ведь потом поток в этой же функции необязательно закрывать?
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
04.12.2010, 11:27     Передача потока по параметру функции #4
Не обязательно.
Yandex
Объявления
04.12.2010, 11:27     Передача потока по параметру функции
Ответ Создать тему
Опции темы

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