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

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

Garoh

#1
При разработке программы на компиляторе 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

#2
Каждая строка типа 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

Genafont

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