Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
 Аватар для Argus19
1732 / 476 / 78
Регистрация: 24.09.2017
Сообщений: 2,573
Записей в блоге: 27

Библиотека дополнительных строковых функций

09.11.2025, 20:10. Показов 2095. Ответов 25

Студворк — интернет-сервис помощи студентам
К написанию dll на С++ побудила фраза:
Цитата Сообщение от testuser2 Посмотреть сообщение
1) InStr для массивов. Итак, начнем с функции InStr. Не хватает реализации этой функции для массивов, говоря по иному, чтобы функция могла искать блок памяти в другом блоке памяти, реализовать хочу, как поиск любого массива внутри любого массива (не ссылочного ест-но)
На странице:
https://metanit.com/cpp/tutorial/12.6.php
Почитал о возможностях типа С++ std::string. К сожалению, ожидал чего-то фантастического, но так и не увидел. Реализовал:
1). функции поиска вхождения подстроки в строку с начала и конца строки для массивов строк;
2). поиск количества вхождений подстроки в строку;
3). странную функцию поиска вхождений любого набора символов подстроки в строку с начала и конца.
Больше ничего придумать не смог.
В пример кода всё, вроде бы понятно. Если что, отвечу на вопросы.
К сожалению, так и не получилось правильно возвращать строку в формате BSTR из dll.
Вложения
Тип файла: zip Проверка функций.zip (11.8 Кб, 7 просмотров)
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.11.2025, 20:10
Ответы с готовыми решениями:

Использование строковых функций
Нужно из введённого текста вывести слова заданной длинны.

Из символов одного текста строковых функций о операций конкатенация получить другой текст
Из символов одного текста с помощью строковых функций о операций конкатенация получить другой...

Сравнение строковых переменных. Где ошибка ?
Задача: Вводятся названия 3-х отелей. Напечатать сообщение о наличии или отсутствии одинаковых...

25
1412 / 878 / 93
Регистрация: 08.02.2017
Сообщений: 3,753
Записей в блоге: 2
13.11.2025, 08:57
Студворк — интернет-сервис помощи студентам
Mikle Quits, так тоже издержки, не хватает специальной функции, надо срочно её делать! )
0
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
13.11.2025, 09:11
Цитата Сообщение от Mikle Quits Посмотреть сообщение
Медленнее, но без издержек:
mid(str2, i, 1) - тут временная строка создается.
Тут достаточно RtlCompareMemory которая без издержек сделает. Можно еще использовать такую функцию:
Visual Basic
1
2
3
4
5
Private Declare Function StrCmpNW Lib "shlwapi" (ByVal p1 As Long, ByVal p2 As Long, ByVal c As Long) As Long
 
Private Sub Form_Load()
    Debug.Print StrCmpNW(StrPtr("Hello world"), StrPtr("Hell"), 3)
End Sub
Добавлено через 1 минуту
https://learn.microsoft.com/ru... pi-strcpyw - тут куча встроенных строковых функций на любой вкус.
1
 Аватар для Mikle Quits
1024 / 313 / 18
Регистрация: 21.01.2023
Сообщений: 552
13.11.2025, 09:33
Цитата Сообщение от The trick Посмотреть сообщение
тут временная строка создается
Да, конечно. Просто я подумал, что речь идёт об издержках выделения памяти в случае, когда строки длинные.
0
 Аватар для Апострофф
9912 / 3935 / 743
Регистрация: 11.10.2011
Сообщений: 5,916
13.11.2025, 10:21
Цитата Сообщение от testuser2 Посмотреть сообщение
функция StartsWith, которая проверяет включает ли строка1 строку2 в своем начале
Visual Basic
1
StartsWith=INSTR(1,S1,S2)=1
Или о чем дискуссия?
0
1412 / 878 / 93
Регистрация: 08.02.2017
Сообщений: 3,753
Записей в блоге: 2
13.11.2025, 10:24
Апострофф, инстр не найдёт и пойдет искать по всей строке, издержки производства опять )
1
1412 / 878 / 93
Регистрация: 08.02.2017
Сообщений: 3,753
Записей в блоге: 2
16.11.2025, 04:22
Цитата Сообщение от Апострофф Посмотреть сообщение
StartsWith=INSTR(1,S1,S2)=1
От, придумал )
Visual Basic
1
StartsWith = InStrRev(str1, str2, Len(str2))
Правда InStrRev есть только без B-версии, но в моей библиотеке уже есть InStrRevB, еще есть InStrB2, позволяющая использовать отрицательный индекс
Visual Basic
1
EndsWith = InStrB2(-LenB(str2), str1, str2)
Добавлено через 1 минуту
С обычным инстрбом, преимущество отрицательного индекса очвидно )
Visual Basic
1
EndsWith = InStrB(LenB(str1) - LenB(str2) + 1, str1, str2)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.11.2025, 04:22

Нужен программный код.«Обработка строковых данных».
Дан текст из цифр и строчных латинских букв, за которым следует точка. Определите, каких букв —...

Обработка строковых данных
Здравствуйте. Помогите вот с этими двумя заданиями : 1. Ввести предложение и слово. Определить...

Быстрое копирование динамических строковых массивов с помощью API
Известен ли способ, скажем с помощью копирования областей памяти API Быстрого копирования...

Передача объёмистых строковых данных между приложениями
Нужно из одного приложения (VB6 Standard EXE) передать в другое приложение (тоже VB6 Standard EXE)...

Портятся значения строковых переменных
Коллеги, есть серьезная проблема: в программе на VB6 самопроизвольно портятся значения строковых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru