Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
vitalya_gap
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 34
#1

Считывание предложений из текстового файла(готовый код) - C++

09.12.2013, 13:20. Просмотров 437. Ответов 3
Метки нет (Все метки)

Здравствуйте господа. Подскажите пожалуйста возможно ли подправить этот код таким образом чтобы количество считываемых предложений из текстового файла вводилось с клавиатуры?Тут по умолчанию считывает 3 предложения..
Если такое возможно,подскажите как или кто может исправьте пожалуйста)Я сам просто "НУБ" в программировании...
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
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
 
int main()
{   
    ifstream fin("input.txt", ios::binary);
    ofstream fout("output.txt");
    
    if (!fin.is_open() || !fout.is_open())
        cout << "Error!" << endl;
    else // чтение предложений из файла
    {
        vector <string> v; // вектор для предложений
        char ch;
        string str; // строка для предложения
        
        while (fin.peek() == ' ') // пропускаем пробелы до первого предложения
                    fin.seekg(1, ios::cur);
        
        while (true)
        {
            fin.get(ch);
            if (fin.eof()) break;
            str.push_back(ch);
            if (ch == '.' || ch == '!' || ch == '?') // если конец предложения
            {
                v.push_back(str); // предложение в вектор
                str.clear();
                while (fin.peek() == ' ') // пропускаем пробелы между предложениями
                    fin.seekg(1, ios::cur);
            }
        }
        fin.close();
 
        for (auto i = v.rbegin(); i != v.rend(); i++) // запись предложений в обратном порядке в файл
        {
            fout << *i;
            if (i != (v.rend() - 1)) fout << ' ';
        }
        fout.close();
    }
    
    system("pause");
    return 0;
}
Добавлено через 14 часов 30 минут
???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2013, 13:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считывание предложений из текстового файла(готовый код) (C++):

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

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

Считывание из текстового файла - C++
Нужно модифицировать программу. Чтобы пользователь вводил текст НЕ в диалоговом окне, а текст был записан в *. ТХТ файле, откуда программ...

Считывание из текстового файла - C++
Всем привет. У меня есть текстовый файл в котором, к примеру записана информация:&quot;Фамилия Имя&quot;. Как мне из этого файла по словно...

Считывание с текстового файла. Сортировка - C++
С текстового файла считать последовательность записей, содержащих данные о книге: &lt;Автор&gt;, &lt;Название книги&gt;, &lt;Год издания&gt;, &lt;Количество...

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

3
SatanaXIII
Супер-модератор
Эксперт С++
5618 / 2653 / 246
Регистрация: 01.11.2011
Сообщений: 6,549
Завершенные тесты: 1
09.12.2013, 13:29 #2
Цитата Сообщение от vitalya_gap Посмотреть сообщение
по умолчанию считывает 3 предложения
А сколько у вас в файле? Не три ли?
Цитата Сообщение от vitalya_gap Посмотреть сообщение
количество считываемых предложений из текстового файла вводилось с клавиатуры?
Двадцать третья строка: заменить while на for, и предварительно воткните для него cin.
1
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
09.12.2013, 13:43 #3
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cstdlib>
using namespace std;
 
int main()
{
    ifstream fin("in.txt", ios::binary);
    ofstream fout("output.txt");
 
    if (!fin.is_open() || !fout.is_open())
        cout << "Error!" << endl;
    else // чтение предложений из файла
    {
        vector <string> v; // вектор для предложений
        char ch;
        string str; // строка для предложения
        int cnr;
        std::cout << "cnr= ";
        std::cin >> cnr;
 
        while (fin.peek() == ' ') // пропускаем пробелы до первого предложения
                    fin.seekg(1, ios::cur);
 
        while (cnr)
        {
            //std::cout << cnr << '\n';
            fin.get(ch);
            //std::cout << ch << '\n';
            if (fin.eof())
                break;
            str.push_back(ch);
            if (ch == '.' || ch == '!' || ch == '?') // если конец предложения
            {
                v.push_back(str); // предложение в вектор
                --cnr;
            //std::cout << str << '\n';
                str.clear();
                while (fin.peek() == ' ') // пропускаем пробелы между предложениями
                    fin.seekg(1, ios::cur);
            }
        }
        //std::cout << "v.size(): " << v.size() << '\n';
        fin.close();
 
        for (auto i = v.rbegin(); i != v.rend(); i++) // запись предложений в обратном порядке в файл
        {
            fout << *i;
            cout << *i;
            if (i != (v.rend() - 1)) fout << ' ';
        }
        fout.close();
    }
    return 0;
}
1
vitalya_gap
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 34
09.12.2013, 14:18  [ТС] #4
igorrr37, Спасибо,работает)
0
09.12.2013, 14:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2013, 14:18
Привет! Вот еще темы с ответами:

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

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

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

Считывание информации из текстового файла - C++
Ребят, как считать текст из блокнота с выводом его на экран?? (если можно с комментариями ) Заранее спасибо!


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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