|
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
|
|
Удалить из строки слова, содержащие цифры17.02.2013, 21:22. Показов 5624. Ответов 35
Метки нет (Все метки)
[MFC] Помогите пожалуйста кто-нибудь, как разделять массив строк, используя CString, очень прошу помощи
Через консоль подобное давно бы сделал
0
|
|
| 17.02.2013, 21:22 | |
|
Ответы с готовыми решениями:
35
Дана строка, удалить слова содержащие цифры Поместить в начало строки слова, содержащие только цифры, а затем – все остальные слова
|
| 18.02.2013, 22:27 | |
|
CString - это просто обертка над обычным массивом (в частности, позволяет ему динамически расти).
Посмотрите в MSDN методы класса CString - там есть доступ по индексу к элементу строки итп. Все, что вы можете сделать с обычной строкой типа char* (и даже больше), можете сделать и с CString - ценой не слишком больших накладных расходов. Возьмите ваш код на C и просто переведите его "в MFC" - заглядывая в описание из MSDN. Получив первый опыт, займетесь оптимизацией. На сайтах типа codeguru.com / codeproject.com вы можете найти исходники десятков примеров токенайзеров и парсеров строк именно на MFC, но будет больше пользы, если сделаете это самостоятельно.
0
|
|
|
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
|
|
| 19.02.2013, 05:11 [ТС] | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
|
||||||
| 26.02.2013, 13:36 [ТС] | ||||||
|
Здравствуйте ещё раз, я всё по той же проблеме, с Tolenize разобрался...но не понимаю, какой цикл внутрь вводить надо. Вот код функции обработки:
Кликните здесь для просмотра всего текста
0
|
||||||
| 26.02.2013, 17:30 | |
|
А при чем тут операции с файлами? Да еще такие странные? Если вам нужно читать из файла построчно, используйте fgets(). У CFile нет методов форматированного ввода.
Прочитанную строку помещаете в CString и работаете с ней методами этого класса. Если нужен цикл - то самое место для него здесь - в tokenizer(). tokenizer, очевидно, может быть устроен двояко: либо он возвращает очередной токен, либо список всех токенов (первый вариант, обычно, проще). Сам токен может быть либо копией части входной строки, либо парой (tupple) вида (Ptr,Size) или (Ofs,Size). Наивный вариант с копированием, обычно, проще. Обратную запись также можно выполнить через fputs(). В любом случае, неформатированный I\O посредством CFile - самый неудобный для вас вариант.
0
|
|
|
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
|
|
| 26.02.2013, 18:54 [ТС] | |
|
gazlan, использую CFileStdio, потому что по заданию, надо считывать из файла, обрабатывать и записывать результат в выходной файл. Никаких отстроненний нельзя делать
0
|
|
| 26.02.2013, 19:32 | |
|
А в файле у вас при этом одна-единственная строка (та, что требует обработки) или произвольный набор строк?
Во втором случае, вам придется, сначала, огранизовать собственное "форматированное чтение" - выборку отдельной строки из файла. Вы уверены, что заданием установлено ограничение: использовать только CFile?
0
|
|
|
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
|
|
| 26.02.2013, 20:38 [ТС] | |
|
gazlan, дан текст, в файле input.txt , нужно вывести результат в output.txt, в тексте не произвольный текст, а я сам его написал, ну хотя можно написать любой другой. Можно использовать CFile и CStdioFile
0
|
|
|
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
|
|
| 27.02.2013, 04:22 [ТС] | |
|
gazlan, я в коде уже написал запись и вывод, все нормально читает и отлично записывается. Я писал изначально, чтобы помочь мне написать токенайзер...
0
|
|
|
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
|
||||||
| 27.02.2013, 09:49 [ТС] | ||||||
хочу так же добавить, что не сильно разбираюсь в MFC, мог что-то напутать....
0
|
||||||
| 27.02.2013, 12:26 | |||||||
|
fileIn.Seek() - это не требуется. Используйте CStdioFile.ReadString() ReleaseBuffer() - это вообще ни к чему: освободив буфер, объект класса полностью теряет контроль над ним и возлагает его на программиста. Вам это надо? str.Tokenize() - А что, в классе CString уже есть такой метод? Используйте FindOneOf() для поиска разделителей (это не только - и не обязательно - пробел, но еще табуляция, знаки препинания, спецсимволы итп). Правильный подход для вашего случая - явно перечислить все допустимые в слове символы (например, дефис и апостроф допустимы: {из-за}, {О'Генри} - это корректные слова, а двойная кавычка - нет. {об"ект} - это будет, в вашем случае, не одно слово).
0
|
|||||||
|
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
|
|
| 27.02.2013, 13:06 [ТС] | |
|
gazlan, все 3 кода написал мне учитель...мне оставалось только условие в Tokenize сделать...сейчас вы мне предлагаете все убрать
Я могу копию сделать и попробывать, но так и так мне нужно само условие...не понимаю, как заменить слово пустым значением. Знаю, что в программирование нет ничего невозможного, поэтому помогите пожалуйста сделать условие...не надо менять код
0
|
|
| 27.02.2013, 14:34 | |||||||
|
Если вам нужно, чтобы Tokenize() было методом класса, вам придется написать собственный. Алго может выглядеть так:
Важно: "указатель позиции" должен сохранять свое значение между вызовами Tokenize(). Если это член класса Tokenizer, условие будет выполнено автоматически. Если Tokenize() будет реализован как обычная функция, необходимо, чтобы эта переменная имела класс памяти static или находилась в охватывающем блоке.
0
|
|||||||
|
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
|
|
| 27.02.2013, 15:33 [ТС] | |
|
gazlan, если бы она не работала, то она не работала, а она на самом деле разбивает на слова
0
|
|
| 27.02.2013, 15:51 | |||||||
|
Не подумал. Я предпочитаю старую шестерку (из-за компактного кода), а в более новых версиях MFC CStringT::Tokenize() действительно есть. Well. Судя по описанию
Тогда что еще осталось?
0
|
|||||||
|
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
|
|
| 27.02.2013, 15:52 [ТС] | |
|
gazlan, цикл удаления слов с цифрами внутри while
0
|
|
| 27.02.2013, 17:05 | |||||||||||
Вот еще, не сообразил - запись тоже должна быть одной строкой. Поэтому вводим еще промежуточную строку - аккумулятор, накапливаем в ней строку, а потом записываем.
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
|
||||||
| 27.02.2013, 17:35 [ТС] | ||||||
|
gazlan, у меня VS 2012, findoneof просит передать 3 параметра
![]()
0
|
||||||
| 27.02.2013, 17:35 | |
|
Помогаю со студенческими работами здесь
20
Строки (из заданной последовательности слов удалить слова, содержащие числа) ) Удалить из строки все слова, начинающиеся с цифры
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|