4.21. Замена в текстовом файле последовательностей пробелов на один пробел
4.21. Замена в текстовом файле последовательностей пробелов на один пробел
Проблема
Имеется текстовый файл с последовательностями пробелов различной длины и требуется заменить каждое вхождение такой последовательности на единственный пробел.
Решение
Для чтения непрерывной последовательности непробельных символов из потока в строку используйте шаблон функции operator>>, определенный в <string>. Затем используйте его двойника operator<<, который записывает каждую из этих последовательностей в выходной поток, и после каждой из них добавьте по одному пробелу. Пример 4.30 дает краткий пример этой методики.
Пример 4 30. Замена последовательностей пробелов на один пробел
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, char** argv) {
if (argc < 3)
return(EXIT_FAILURE);
ifstream in(argv[1]);
ofstream out(argv[2]);
if (!in || !out)
return(EXIT_FAILURE);
string tmp;
in >> tmp; // Прочитать первое слове
out << tmp; // Записать его в выходной поток
while (in >> tmp) { // operator>> игнорирует пробелы, так что все, что
out << ; // я должен сделать, - это записать пробел и каждую
out << tmp; // последовательность «непробелов»
}
out.close();
}
Обсуждение
Это просто сделать, если использовать потоки и строки. Даже если требуется реализовать другой вариант этого — например, чтобы сохранить переходы на новую строку, — эта методика будет работать. Если требуется добавить переходы на новые строки, для их расстановки в нужных местах используйте решение, представленное в рецепте 4.16.
Смотри также
Рецепты 4.15 и 4.16.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
21.3.3. Тестирование последовательностей
21.3.3. Тестирование последовательностей Для проверки большинства последовательностей вам нужно просто войти в виртуальную консоль и запустить cat. Введите последовательности, которые вы хотите протестировать, и увидите результаты. Для ^[ нажмите клавишу <Esc>.Терминалы
Функции отрезания пробелов
Функции отрезания пробелов trimУдаляет из заданной строки начальные и конечные пробельные символы.Синтаксис:string trim(string str)Возвращает копию str, только с удаленными ведущими и концевыми пробельными символами. Под пробельными символами надо понимать и пробел.Например, вызов
14.4.1 Использование команд в текстовом диалоге
14.4.1 Использование команд в текстовом диалоге Многие пользователи предпочитают графический интерфейс, доступный на настольных системах, но текстовый интерфейс позволяет лучше понять внутренние процессы протокола FTP.Нижеприведенный текстовый диалог начинается с
7. Предложение коучинга в мини-группе или один на один
7. Предложение коучинга в мини-группе или один на один Если человек оплатил товар и даже купил у вас что-то еще, это не повод останавливаться. Вы можете позвонить всем клиентам по телефону и предложить бесплатную 15-минутную личную консультацию и продать коучинг один на
Пробел
Пробел Раньше мы также работали с вложенными пробелами, используя две подпрограммы IsWhite и SkipWhite. Удостоверьтесь, что эти подпрограммы есть в вашей текущей версии Cradle и добавьте строку:SkipWhite;в конец GetName и GetNum.Теперь давайте определим новую процедуру: {–} { Lexical Scanner } Function
2.39. Замена символов табуляции пробелами и сворачивание пробелов в табуляторы
2.39. Замена символов табуляции пробелами и сворачивание пробелов в табуляторы Бывает, что имеется строка с символами табуляции, а мы хотели бы преобразовать их в пробелы (или наоборот). Ниже показаны два метода, реализующих эти операции:class String def detab(ts=8) str = self.dup while (leftmost =
4.18. Подсчет вхождений каждого слова в текстовом файле
4.18. Подсчет вхождений каждого слова в текстовом файле ПроблемаТребуется подсчитать количество вхождений в текстовом файле каждого слова.РешениеДля чтения из текстового файла непрерывных фрагментов текста используйте operator>>, определенный в <string>, а для сохранения
Количество строк в текстовом поле
Количество строк в текстовом поле Если у текстового поля свойство Multiline имеет значение True, то свойство Lines возвращает массив строк в текстовом поле. Но у данного свойства есть два недостатка. Во-первых, свойство Lines не поддерживается библиотекой .NET Compact Framework, а во-вторых,
Методы последовательностей
Методы последовательностей Все последовательности имеют множество методов обработки последовательностей, реализованных как методы расширения.Список методов последовательностей* Методы Print* Метод фильтрации Where* Метод проецирования Select* Метод проецирования SelectMany*
Методы для последовательностей
Методы для последовательностей Методы Print Описание методовМетоды приведены для последовательности sequence of T. function Print(delim: string := ): sequence of T; Выводит последовательность на экран, используя delim в качестве разделителя. function Println(delim: string := ): sequence of T; Выводит
PS4 стартовала, Xbox One на подходе: один на один или двое против всех? Евгений Золотов
PS4 стартовала, Xbox One на подходе: один на один или двое против всех? Евгений Золотов Опубликовано 18 ноября 2013 Затянувшееся перемирие в войне игровых консолей окончено: в пятницу в США стартовали продажи Sony PlayStation 4, а её основной соперник, Xbox One от