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

Разбить текст на абзацы - C++

Восстановить пароль Регистрация
 
Михаил Мамаев
1 / 1 / 0
Регистрация: 28.10.2014
Сообщений: 34
18.11.2014, 21:03     Разбить текст на абзацы #1
Здравствуйте, уважаемые программисты. Такой вопрос. Есть задание и для него уже написана (ниже) программа (спасибо одному хорошему человеку с этого форума). "Задан текст. Предложения текста идут подряд. Преобразовать текст так, чтобы каждое предложение составляло отдельный абзац, начинающийся с красной строки в три пробела."
Но вместо того, чтобы давать компилятору ввести свой текст, нужно дать программе брать текст из txt - файла, предварительно созданного и отредактированного примерно таким образом.
C++
1
2
FILE * infile;
infile=fopen(“my_file.txt”,”r”);
Каким образом это можно реализовать? Теперь мне просто выводит пустоту. Заранее спасибо за помощь.

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
#include <iostream>                 //подключение библиотеки  <iostream>
#include <stdio.h>                  //подключение библиотеки  <stdio.h>
#include <stdlib.h>                 //подключение библиотеки  <stdlib.h>
#include <string>                   //подключение библиотеки  <string>
#include <sstream>                  //подключение библиотеки  <sstream>  
#include <conio.h>                  //подключение библиотеки  <conio.h> 
#include <ctype.h>                  //подключение библиотеки  <ctype.h> 
 
using namespace std;                    //обеспечим доступ к именам из std без префикса std
 
int main()                             //определение функции с именем main()
{
    string text;
    cout << "Enter random text \n\n\n\n\n";
    getline(cin, text);
    cout << "\n\n\n\n\n";
    setlocale(LC_CTYPE, "Russian");   //создание русскоязычного интерфейса программы
    int len = text.length();
    string a = "   ";
    string b = a;
    int i = -1;                     //присваиваем переменной i значение -1
    while (++i < len)              //начало цикла
    {
        b += text[i];            //копируем символ в новую строку
        if (text[i] == '.')     //если дошли до точки
        {
            b += "\n";        //вставляем перевод строки
            b +=a ;          //вставляем табуляцию
 
            if (i + 1 < len && text[i + 1] == ' ')    //игнорируем пробел после точки, если он там есть
            {
                i=i+1;
            }
        }
    }
 
    cout << b;                //вывод на экран отредактированного текста, в соответствии с заданием
    system("pause");         //команда о выводе командной строки
    return 0;               //возвращающее значение
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4299 / 3720 / 1253
Регистрация: 14.04.2014
Сообщений: 14,551
18.11.2014, 21:09     Разбить текст на абзацы #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вместо строк 14-16 вставь:
C++
1
2
ifstream ifs("my_file.txt");
getline(ifs, text);
И fstream подключи.
Михаил Мамаев
1 / 1 / 0
Регистрация: 28.10.2014
Сообщений: 34
18.11.2014, 21:20  [ТС]     Разбить текст на абзацы #3
nmcf, cпасибо огромное, все работает. Скажите, пожалуйста, а возможно ли дать компилятору предоставить нам возможность ввести имя файла, и в случае, если такого файла он не находит, вывести что-то типа сообщения об ошибке?
nmcf
4299 / 3720 / 1253
Регистрация: 14.04.2014
Сообщений: 14,551
18.11.2014, 21:26     Разбить текст на абзацы #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
    string f_name;
    cout << "Enter file name: ";
    getline(cin, f_name);
    ifstream ifs(f_name);
    if (!ifs)
    {
        cout << "Error." << endl;
        return 1;
    }
Михаил Мамаев
1 / 1 / 0
Регистрация: 28.10.2014
Сообщений: 34
18.11.2014, 21:46  [ТС]     Разбить текст на абзацы #5
nmcf, Премного Вам благодарен. Сильно выручили.
Yandex
Объявления
18.11.2014, 21:46     Разбить текст на абзацы
Ответ Создать тему
Опции темы

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