Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2022, 00:41   #1
SiNedezz
Новичок
Джуниор
 
Регистрация: 04.06.2022
Сообщений: 3
По умолчанию Файлы. Удалить последнюю букву в каждом слове и записать результат в новый файл

Здравствуйте, помогите написать код. Файл содержит слова. Удалить последнюю букву в каждом слове и записать результат в новый файл.
SiNedezz вне форума Ответить с цитированием
Старый 05.07.2022, 13:25   #2
Геомеханик
 
Регистрация: 05.07.2022
Сообщений: 4
По умолчанию

Код:
#include <iostream>
#include <sstream>
#include <fstream>
#include <algorithm>
#include <iterator>
#include <cctype>
#define IS_DELIM(c) (std::isspace((c)) || std::ispunct((c)))

void remove_last_char_words(std::ostream& _out, std::istream& _inp){
	bool        b = false;
	std::string s = "";
	std::istreambuf_iterator<char> it(_inp), e;
	while(it != e){
		s = "";
		while((it != e) && IS_DELIM(*it))
			s += *it++;

		b = false;
		while((it != e) && !IS_DELIM(*it)){
			s += *it++;
			b  = true;
		}

		if(!s.empty()){
			if(b)
				s.pop_back();
			_out << s;
		}
	}
	_out.flush();
}

int main(){
/*
	char s[] = "JAVA FORTH, ACTOR, HASKELL PHP, PERL!!!!";
	std::istringstream sp(s);
	remove_last_char_words(std::cout, sp);
*/
	std::ifstream fin("input.cpp");
	std::ofstream fout("output.txt");
	remove_last_char_words(fout, fin);
	fin.close();
	fout.close();
	std::cin.get();
	return 0;
}
Геомеханик вне форума Ответить с цитированием
Старый 06.07.2022, 07:42   #3
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 947
По умолчанию

SiNedezz,
Код:
#include <iostream>
#include <sstream>
#include <fstream>
#include <regex>

int main()
{
    std::ifstream in("in.txt");
    in.seekg(0,in.end);
    if(const auto pos=in.tellg(); pos>=0)
    {
        in.seekg(0);
        
        std::string txt(pos,'\0');
        in.read(txt.data(),txt.size());
        in.close();
        
        std::ofstream{"out.txt"}<<std::regex_replace(txt,std::regex{R"(\w\b)"},"");
    }

    return 0;
}

Последний раз редактировалось Алексей1153; 06.07.2022 в 07:45.
Алексей1153 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить последнюю букву в каждом слове. XakProg Помощь студентам 2 25.11.2018 08:36
[C] задано строку, слова в котором разделены пробелами. заменить в каждом слове первую букву, если она маленькая, на большой карабах Помощь студентам 0 04.12.2017 20:24
Перенести последнюю букву в начало слова; удалить из слова первую букву Narsky Помощь студентам 68 03.07.2016 18:54
Прочитать из файла числа, отсортировать их по возрастанию, результат записать в новый файл. lika1129970 Паскаль, Turbo Pascal, PascalABC.NET 7 02.04.2013 13:45
Дан файл f, который содержит вещественные числа. Найти сумму чисел и записать результат в новый файл. (Delphi) 2Nboy Помощь студентам 1 08.06.2012 17:01