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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.58
usovand
0 / 0 / 0
Регистрация: 22.08.2013
Сообщений: 4
#1

Считывание текста из файла - C++

22.08.2013, 14:50. Просмотров 1767. Ответов 7
Метки нет (Все метки)

Собственно, задача такая:
есть файл info.txt
в ней строки такого формата
$параметр_1$параметр_2$параметр_3$...$параметр_n

есть объект класса, который имеет эти свойства.
Необходимо считывая строки, создавать объекты и присваивать свойствам объекта вот эти параметры.

$ - сам придумал для разделения, может не очень хорошо.

Где можно об этом что-то узнать? Ну или примеры может у кого есть
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2013, 14:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считывание текста из файла (C++):

Считывание текста из файла - C++
Имеется такая функция: int out(char* filename, Queue* Q) // функция считывания данных { ifstream fin(filename); if(!fin) {...

Считывание текста с файла - C++
Здравствйте,нужна программа которая будет считывать текст с файла и выводить его в другой файл.Что то не выходитюПрограмма просто создает...

Считывание текста из файла - C++
Написать программу, которая считывает текст (.txt) из файла и выводит на экран только цитаты, то есть предложения заключённые в кавычки.

Считывание текста из файла - C++
Вот собственно такая задачка Некоторый текст состоит из нескольких частей, записанных в отдельных файлах. Имена этих файлов и общий...

Считывание текста из файла - C++
Необходимо написать программу, которая считывает текст из файла и выводит на экран.

Считывание определенного текста из файла - C++
У меня есть текст в файле ASD/FG/GH. Как мне записать все, что разделено табуляцией в разные чаровские переменные? До первого понятно,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.08.2013, 15:24 #2
Можно как-то так сделать (как направление, без деталей):
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
34
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <sstream>
 
    using namespace std;
...
 
    ifstream fin("info.txt"); // поток для чтения
    string str;     // для строки
    string word;    // для слов
    stringstream s; // поток для строк
   
    fin.get(); // извлечение первого '$' в строке (кстати, без него никак? Может лучше так записать строку: параметр_1$параметр_2$параметр_3$...параметр_n$)
    while (getline(fin, str)) // чтение строк до конца файла
    {
        
        s << str; // считанную строку помещаем в строковый поток, чтобы потом извлекать слова
        
        // здесь создание объекта
        
        while (getline(s, word, '$')) // извлекаем слова
        {
            // здесь инициализация полей объекта словами из строки
        }
        
        // здесь сохранение объекта
        
        s.clear(); // сброс флагов строкового потока
        s.str(""); // очистка строкового потока
 
        fin.get(); // извлечение первого '$' в строке
     }
     fin.close();
usovand
0 / 0 / 0
Регистрация: 22.08.2013
Сообщений: 4
22.08.2013, 16:25  [ТС] #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Можно как-то так сделать (как направление, без деталей):
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
34
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <sstream>
 
    using namespace std;
...
 
    ifstream fin("info.txt"); // поток для чтения
    string str;     // для строки
    string word;    // для слов
    stringstream s; // поток для строк
   
    fin.get(); // извлечение первого '$' в строке (кстати, без него никак? Может лучше так записать строку: параметр_1$параметр_2$параметр_3$...параметр_n$)
    while (getline(fin, str)) // чтение строк до конца файла
    {
        
        s << str; // считанную строку помещаем в строковый поток, чтобы потом извлекать слова
        
        // здесь создание объекта
        
        while (getline(s, word, '$')) // извлекаем слова
        {
            // здесь инициализация полей объекта словами из строки
        }
        
        // здесь сохранение объекта
        
        s.clear(); // сброс флагов строкового потока
        s.str(""); // очистка строкового потока
 
        fin.get(); // извлечение первого '$' в строке
     }
     fin.close();
Спасибо за ответ. Буду реализовывать.

Добавлено через 12 минут
Символ $ убрал в самом начале. Не совсем понятно как провести инициализацию.

Например:
C++
1
2
3
4
5
6
7
8
9
class example
{
 public:
 char param1[100];
 char param2[100];
...
 char param3[100];
 
};
одна строка файла - описание одного объекта.

Добавлено через 12 минут
Хотя нет, понял
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.08.2013, 16:28 #4
Массивы char обязательно? Может лучше string использовать?
usovand
0 / 0 / 0
Регистрация: 22.08.2013
Сообщений: 4
22.08.2013, 16:29  [ТС] #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Массивы char обязательно? Может лучше string использовать?
Да, можно и string

Тогда как быть?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.08.2013, 16:31 #6
Цитата Сообщение от usovand Посмотреть сообщение
Символ $ убрал в самом начале
Тогда это незабудьте из кода убрать (в двух местах):
C++
1
fin.get();
Добавлено через 46 секунд
Цитата Сообщение от usovand Посмотреть сообщение
Да, можно и string
Тогда как быть?
Когда? При инициализации? Просто присвоение.
usovand
0 / 0 / 0
Регистрация: 22.08.2013
Сообщений: 4
22.08.2013, 16:38  [ТС] #7
Цитата Сообщение от alsav22 Посмотреть сообщение
Тогда это незабудьте из кода убрать (в двух местах):
C++
1
fin.get();


Когда? При инициализации? Просто присвоение.
Убрал

exapmle.param1 = word; ???
example.param2 = тут уже не ясно...

как тогда он поймет что нужно создавать новый объект?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.08.2013, 19:37 #8
Цитата Сообщение от usovand Посмотреть сообщение
как тогда он поймет что нужно создавать новый объект?
Он - это программист?

Добавлено через 6 минут
Сколько полей в классе?

Кликните здесь для просмотра всего текста
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
34
35
    #include <vector>
...
 
    ifstream fin("info.txt"); // поток для чтения
    string str;     // для строки
    string word;    // для слов
    stringstream s; // поток для строк
    vector <string> v; // вектор для слов
   
    while (getline(fin, str)) // чтение строк до конца файла
    {
        
        s << str; // считанную строку помещаем в строковый поток, чтобы потом извлекать слова
        
        // здесь создание объекта
        example obj; // в классе три поля string
        
        while (getline(s, word, '$')) // извлекаем слова в вектор
        {
            v.push_back(word);
 
        }
        
            // инициализация полей объекта словами из строки
            obj.param1 = v[0];
            obj.param2 = v[1];
            obj.param3 = v[2];
 
        // здесь сохранение объекта
        
        v.clear(); // очищаем вектор
        s.clear(); // сброс флагов строкового потока
        s.str(""); // очистка строкового потока
     }
     fin.close();


Добавлено через 22 минуты
Если строки в файле такие:

// параметр_1$параметр_2$параметр_3$
// параметр_1$параметр_2$параметр_3$
//............................

то можно проще:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    ifstream fin("info.txt"); // поток для чтения
    string word;    // для слов
    
    while (true) // чтение слов до конца файла
    {
        // создание объекта (в классе три поля string)
        example obj; 
 
        getline(fin, obj.param1, '$');
        if (!fin) break;
        getline(fin, obj.param2, '$');
        getline(fin, obj.param3, '$');
        fin.get();
        // здесь сохранение объекта
     }
     fin.close();
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2013, 19:37
Привет! Вот еще темы с ответами:

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

Считывание текста из файла в массив - C++
Привет всем, рябят помогите пожалуйста сделать программу, нужно из файла считать текст, так чтобы каждый символ был представлен в виде аски...

Считывание текста с файла в контейнер multimap - C++
Допусти у меня есть файл записанный вот таким методом #include &lt;iostream&gt; #include &lt;map&gt; #include &lt;string&gt; #include &lt;fstream&gt; ...

Считывание текста с файла методом getchar - C++
Хочу считать текст с файла и вывести на экран но по моему у меня ошибка в коде. std::ifstream ifs(&quot;in.txt&quot;); ...


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

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

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