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

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

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

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

19.03.2010, 21:39. Просмотров 717. Ответов 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++
Как привести в реальность эту конструкцию? VS6 после ifstream fin (&quot;test&quot;); res = wordsearch (fin); выдавала...

Передача потока в функцию - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; void out(std::ofstream&amp; streamOut) { streamOut &lt;&lt; &quot;Text&quot;; } int main() ...

Передача потока в функцию - C++
Добрый вечер. Столкнулся с вопросом: &quot;Как передать поток в качестве параметра функции?&quot; Есть вариант, чтобы передавать только имя файла, а...

Передача потока как параметра в функцию - C++
Дорогие форумчане! Повторяю пример из книжки, пока остановился из-за ошибки. //Программа &quot;Функция ввода вопросов, объявление&quot; ...

Переключение файлового потока ввода вывода - C++
Есть прога. Если закоментить первый цикл то будет читать из файла, если второй то будет его писать. Теперь вопрос: как её заставить делать...

Перевод потока из файлового ввода/вывода в консольный ввод/вывод - C++
Есть кусок программы: freopen (&quot;G:\\input.txt&quot;, &quot;r&quot;, stdin); freopen (&quot;G:\\output.txt&quot;, &quot;w&quot;, stdout); //Открываем файлы - один...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,602
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
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
19.03.2010, 21:45  [ТС] #3
easybudda, а какой вариант лучше исполльзовать? Передавать файл или путь к нему?
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,602
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, значит всё сложилось...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2010, 21:51
Привет! Вот еще темы с ответами:

Ошибка при использовании getline для считывания строки из файлового потока - C++
Ошибка находится в 24 строке на точке. Код, подобный этому (а в этой строке фактически 1 в 1 одинаковый) я разбирал в институте. Видимо...

Почему событие eof() файлового потока наступает очень поздно? Какова вообще его логика? - C++
Вот пример, если в папке с программой разместить файл input.txt с числами &quot;1 2 3&quot;, то в векторе sequence будут следующие элементы: 1 2 3 3 ...

Передача потока в конструктор - C++
Подскажите пожалуйста, как создать динамический массив объектов класса, передавая в конструктор потока. ifstream f(&quot;data.txt&quot;,...

Передача потока по параметру функции - C++
Доброго времени суток. Есть пара вопросов :) Допустим у нас имеется функция открытия файла: int open_file() { char...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.03.2010, 21:51
Ответ Создать тему
Опции темы

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