@Norbyt

Как выделить абзацы в тексте тегом правильно?

Есть текст, в котором нужно расставить в тег P.В связи с тем, что текст большой решил написать небольшую программу. Тут я встретился с другой проблемой то что каждая строчка в тексте идёт с нового абзаца, в следствии чего когда проверял программу я ей дал на вход один абзац из текста и он определи, что там количество абзацев = количеству строк. Как решить данную проблему?
Если есть программа с подобным функционалам буду рад узнать.
Код:
ifstream file("text.txt");
string str;
	char u;
	while (!file.eof())
	{
		file.get(u);
		if (str.empty()) {
			str = "<p>";
			str.push_back(u);
		}
               else  if (u == 10) str += "</p>\n<p>";
		else str.push_back(u);
	}
	cout << str;
	file.close();
	ofstream output("output.txt");
	output << str;
	output.close();
  • Вопрос задан
  • 988 просмотров
Пригласить эксперта
Ответы на вопрос 3
Nipheris
@Nipheris Куратор тега C++
Если четких признаков начала нового абзаца в исходном тексте нет (а их нет, раз у вас каждая строка бьется \n), то тогда оценивайте примерно - если строка дошла до некоторого предела, значит скорее всего следующая строка - это продолжение старого абзаца, а если не дошла до предела, а закончилась довольно рано - то скорее всего новый абзац.
Точного решения пока не могу предложить, да и врядли оно есть.
А может быть у вас абзац начинается когда два \n подряд идут?
Ответ написан
Комментировать
@dady_KK
PM
Можно попробовать такой алгоритм, если перед символом конца строки стоит точка, вопросительный или восклицательный знак или многоточие, то это конец абзаца. Метод конечно приблизительный, но всё же как вариант может сгодиться.
Ответ написан
Adamos
@Adamos
Plain-тексты бывают двух типов: в одних абзацы отбиты лишним \n, в других - начинаются с нескольких пробелов. И те, и другие легко приводятся в порядок регулярками.
Текст, в котором не соблюдается ни то, ни другое - это хаос, который бесполезно править автоматически. Все равно придется переделывать руками.

Камлание со знаками препинания - полумера. Посреди строки могут встретиться инициалы или сокращения, а в конце заголовка точка в русском языке не ставится.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы