Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
11 / 11 / 1
Регистрация: 26.04.2012
Сообщений: 104

Работа с файлом через класс

21.10.2012, 00:58. Показов 1501. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброй ночи всем!

Хочу реализовать открытие файла для чтения из конструктора класса CTextFile:
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
#ifndef ___TEXT_FILE___
#define ___TEXT_FILE___
 
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
class CTextFile
{
    public:
        CTextFile(string fname);
        CTextFile(const CTextFile & obj);
          ~CTextFile();
 
       char buf();
       int get_letter_count();
       
    private:
       char    _buf;
       string  _file_name;
       fstream _file;
 
};
#endif
Файл реализации:
C++
1
2
3
4
5
6
7
CTextFile::CTextFile(string fname)
{
    _file_name = fname;
    _file = fstream(_file_name);
}
 
/* ......... */
Подскажите каким образом открывать файл с именем, которое передаю в виде параметра конструктора.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.10.2012, 00:58
Ответы с готовыми решениями:

Класс матрицы работа с файлом
Разработать для класса динамических матриц методы чтения матрицы из файла текстового формата и записи матрицы в файл текстового формата...

Класс (работа с текстовым файлом)
Здравствуйте. помогите пожалуйста) есть класс: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include...

Работа с файлом через классы
Привет всем! Может кто помочь, как работать с файлами (открыть, закрывать, читать из файла, записывать в файл)через классы, объяснить на...

12
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
21.10.2012, 01:21
C++
1
2
3
4
5
6
CTextFile::CTextFile(string fname)
    : _file(fname)
    , _file_name(fname)
{
    _file.open();
}
0
11 / 11 / 1
Регистрация: 26.04.2012
Сообщений: 104
21.10.2012, 12:21  [ТС]
Не работает(

Ругань компилятора:
C++
1
2
3
4
5
g++ -c main.cpp
g++ -c CTextFile.cpp
CTextFile.cpp: In constructor `CTextFile::CTextFile(std::string)':
CTextFile.cpp:5: error: no matching function for call to `std::basic_fstream<cha                                                                     r, std::char_traits<char> >::basic_fstream(std::string&)'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/iosfwd:96: note: candidates are: s                                                                     td::basic_fstream<char, std::char_traits<char> >::basic_fstream(const std::basic                                                                     _fstream<char, std::char_traits<char> >&)
0
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
21.10.2012, 12:25
C++
1
2
3
4
5
6
CTextFile::CTextFile(string fname)
    : _file(fname.c_str())
    , _file_name(fname)
{
    _file.open();
}
0
11 / 11 / 1
Регистрация: 26.04.2012
Сообщений: 104
21.10.2012, 17:44  [ТС]
Всё равно не работает.

Снова компилятор ругается:
C++
1
2
3
CTextFile.cpp: In constructor `CTextFile::CTextFile(std::string)':
CTextFile.cpp:6: error: no matching function for call to `std::basic_ifstream<char, std::char_traits<char> >::open()'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/fstream:570: note: candidates are: void std::basic_ifstream<_CharT, _Traits>::open(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.10.2012, 17:47
Марш книги читать. _file.open() не нужен, это первое. Второе, функция open принимает как минимум один аргумент.
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.10.2012, 17:54
C++
1
2
3
4
5
CTextFile::CTextFile(string fname)
{
    _file_name = fname;
    _file.open(_file_name);
}
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.10.2012, 17:56
alsav22, Про список инициализации слышали?
0
11 / 11 / 1
Регистрация: 26.04.2012
Сообщений: 104
21.10.2012, 17:59  [ТС]
Спасибо, всем.
Просто выполнял по аналогии с
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main(int argc, char ** argv)
{
    char buf;
    ifstream my_txt;
    my_txt.open(argv[1]);
 
    int number(0);
    while(my_txt.get(buf))
        ++number;
    cout << number;
 
    my_txt.close();
    return 0;
}
и там сначала создаёшь объект класса ifstream, а потом связываешь его с файлом.

Всё заработало в таком варианте:
C++
1
2
3
4
CTextFile::CTextFile(string fname): _file_name(fname), _file(fname.c_str())
{
    //_file.open();
}
И чем, кстати, список инициализации лучше инициализации переменных в теле конструктора?
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.10.2012, 18:09
Цитата Сообщение от soon Посмотреть сообщение
alsav22, Про список инициализации слышали?
И что? Без его прямо никак?

Добавлено через 5 минут
Цитата Сообщение от ilikeMagic Посмотреть сообщение
И чем, кстати, список инициализации лучше инициализации переменных в теле конструктора?
Ничем. Но иногода без них не обойтись. Например. инициализации констант или вызов конструктора базового класса.
1
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
21.10.2012, 18:09
Цитата Сообщение от ilikeMagic Посмотреть сообщение
И чем, кстати, список инициализации лучше инициализации переменных в теле конструктора?
В данном случае он не лучше, он просто необходим. При входе в тело конструктора объект _file уже будет создан (для него будет вызван дефолтный конструктор). А так в списке инициализации ты говоришь, что нужно вызывать конструктор с праметром fname.c_str().
1
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
21.10.2012, 18:10
Цитата Сообщение от Kastaneda Посмотреть сообщение
он просто необходим
ну если не использовать open().
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.10.2012, 18:11
Цитата Сообщение от Kastaneda Посмотреть сообщение
ну если не использовать open().
Спасибо за уточнение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.10.2012, 18:11
Помогаю со студенческими работами здесь

работа с файлом через входной параметр
int _tmain(int argc,char* argv) { FILE* F =fopen(argv, &quot;wt+&quot;); когда пишу параметр запуская через командную строку или ярлык,...

Работа с PDF файлом через PHP
Кто знает, можно ли сделать следующее посредствам php: - открыть pdf файл - поредактировать его (добавить надписи и картинки) -...

Работа с файлом через стеки и очередь
У вас есть текстовый файл. Используя стек, сформировать новый файл, в котором строки записаны в обратном порядке. Первая строка нового...

Работа с файлом и словарем через BufferedReader
Добрый день. Пытаюсь попасть на курсы Java, дали тестовое задание: Имеется два входных файла – файл_с_текстом и файл_словаря....

Работа с Excel файлом через Access 97
Есть база данных primer.mdb с прилинкованной таблицей test.xls Как программно можно добавить/удалить столбцы в таблице test.xls


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru