Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

54 строки
1.8 KiB
C++

#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
const size_t MAX_SIZE = 256;
const char* separators = " \r\n,.!?:;()-";
int main() {
std::ifstream inputFile("example_input.txt"); // Здесь "example_input.txt" - название файла для чтения
if (!inputFile.is_open()) {
std::cerr << "Ошибка открытия файла!" << std::endl;
return 1;
}
char text[MAX_SIZE];
// Считываем строку из файла
inputFile.getline(text, MAX_SIZE);
const char* start = text;
// Алгоритм разбиения строки на слова и их вывод
while (true) {
// Определить, сколько разделителей находятся в начале строки
const size_t separator_count = strspn(start, separators);
// Пропустить их
start += separator_count;
// Если достигнут конец строки, закончить работу
if (start[0] == '\0') {
break;
}
// Найти первый разделитель от нового начала строки (длину слова)
const size_t word_length = strcspn(start, separators);
// Напечатать часть строки от начала слова до разделителя
std::cout.write(start, word_length);
// Напечатать символ перевода строки
std::cout << '\n';
// Сдвинуть начало строки вперед на длину слова
start += word_length;
}
inputFile.close(); // Закрываем файл после использования
return 0;
}