• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Помогите с функциями

  • Автор темы Garoh
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Garoh

При разработке программы на компиляторе C++ Builder 6.0 мне понадобилась функция такого типа:
function_name(AnsiString s1, AnsiString s2),
где: function_name - естесственно, имя функции; s1 - некоторая исходная строка, s2 - строка или символ, которые необходимо найти на всем протяжении строки s1 и возвратить порядковый номер ее начала. Хотелось бы знать, есть ли такая библиотечная функция вообще, а если есть, то какую библиотеку необходимо подключить для ее вызова. Тип строк необязательно должен быть AnsiString, можно и char, т.к. они легко "конвертируются" друг в друга. В хелпе рылся 3 часа, ничего похожего не нашел. Тему создал именно в этом разделе, потому как это скорее относится к синтаксису языка, а не к объектно-ориентированным свойствам языка и компилятора.
З.Ы: есть такая функция в Basik'е - InStr(s1, s2), она либо возвращает порядковый номер начала строки s2 в строке s1 целочисленного типа, либо возвращает 0, если ничего похожего в s1 не нашла.
Прошу помочь, т.к. на С++ программирую совсем недавно, нужен совет
 
G

Genafont

Каждая строка типа AnsiString может использоваться как массив символов, так же, как и в твоём родном QBasic, т.е. если AnsiString slovo="qwerty", то slovo[2]="w", a slovo[5]="t" и т.д. Далее... Ты можешь свободно определять длину слова поставив после переменной точку и написав Lenght(). Чтобы не было разницы в регистре, т.е. "А" или "а" можно использовать AnsiUpperCase().

К примеру, этот код найдёт символ "G" в строке "QWERTYUIOPASDFGHJKL" и вернёт его позицию:

Код:
AnsiString t = "g";
AnsiString fnnn = "QWERTYUIOPASDFGHJKL";
for(int ttt=1;ttt<=fnnn.Length();ttt++)
{
if(AnsiUpperCase(fnnn[ttt])==AnsiUpperCase(t))
{
Edit1->Text="Первое вхождение символа "+t+" в строке "+fnnn+ " встречается на позиции "+IntToStr(ttt);
}
}
успехов :)
 
G

grigsoft

Ээ, а что strstr в билдере недоступна?
 
G

Genafont

Можно и через strstr(), но мы же не ищем лёгких путей ;) На самом деле - человек новенький в C++, а после QBasic ему будет легко разобраться с этим кодом. ;)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!