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

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

Войти
Регистрация
Восстановить пароль
 
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
833 / 517 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
#1

Передача файлового потока в функцию - C++

19.03.2010, 21:39. Просмотров 675. Ответов 3
Метки нет (Все метки)

Здрасти.


C++
1
ifstream in("1.txt");
что возвращает in? как передать этот поток (in) в функцию которая выводит символы?

C++
1
2
3
4
5
6
7
8
void readFile( ???????????? ){
    char ch;
    while (in){
        in.get(ch);
        cout<<ch;
        getch();
    }
}
Добавлено через 8 минут
я написал второй вариант:

C++
1
2
3
4
5
6
7
8
9
void readFile(char* pathToFile){
    ifstream in(pathToFile);
    char ch;
    while (in){
        in.get(ch);
        cout<<ch;
        getch();
    }
}
какеой правильнее использовать ? первый вариант или второй?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2010, 21:39     Передача файлового потока в функцию
Посмотрите здесь:

Переключение файлового потока ввода вывода C++
C++ Передача файлового потока как параметр-ссылка
C++ Передача потока по параметру функции
Передача потока в функцию C++
C++ Почему событие eof() файлового потока наступает очень поздно? Какова вообще его логика?
Перевод потока из файлового ввода/вывода в консольный ввод/вывод C++
C++ Передача потока в функцию
C++ Ошибка при использовании getline для считывания строки из файлового потока
Передача потока (текущ.позиции курсора в файле) как аргумент функции C++
C++ Передача потока в конструктор
Как передать сокет в функцию потока C++
C++ Передача потока как параметра в функцию

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
19.03.2010, 21:44     Передача файлового потока в функцию #2
PointsEqual, В функцию открытый файл вот так можно передать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
...
void myFunc (std::istream& ist, std::vector<std::string>& v){
  std::string buf;
  while ( ist >> buf )
    v.push_back(buf);
}
...
std::vector<std::string> vec;
std::ifstream fin("file.txt"); 
// проверить удачность открытия файла...
myFunc(fin, vec);
fin.close();
...
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
833 / 517 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
19.03.2010, 21:45  [ТС]     Передача файлового потока в функцию #3
easybudda, а какой вариант лучше исполльзовать? Передавать файл или путь к нему?
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
19.03.2010, 21:51     Передача файлового потока в функцию #4
Цитата Сообщение от PointsEqual Посмотреть сообщение
какой вариант лучше исполльзовать?
Не знаю, если честно, какой из них лучше, знаю только, что в любом случае нужно проверять результат каждого действия с файлом... То бишь приведённую мной в пример функцию лучше было бы как-то так переписать:
C++
1
2
3
4
5
6
bool myFunc (std::istream& ist, std::vector<std::string>& v){
  std::string buf;
  while ( ist >> buf )
    v.push_back(buf);
  return !ist.bad();
}
и проверять возвращаемое значение - если true, значит всё сложилось...
Yandex
Объявления
19.03.2010, 21:51     Передача файлового потока в функцию
Ответ Создать тему
Опции темы

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