|
VC++의 ReverseFind 기능을 구현해 봤습니다.
C++ Builder는 만지기 시작한지 며칠 안되어서 아래 코드가 컴파일은 되지만
AnsiString, WideString에 따라서 어떻게 작동할 지는 잘 모르겠네요.
혹시 아래 코드가 문제가 없는지 알려주셨으면 합니다.
그리고 C++ builder에서는 배열의 index가 1부터 시작하나요?
테스트를 하다보면 인덱스 땜에 에러가 나곤 하던데, 어찌 된 일인지?
아래 코드도 인덱스가 1부터 시작한다고 가정하고 만들었습니다.
long TForm::ReverseFind( String strSource, String strToken )
{
for( long i = strSource.Length() - strToken.Length() + 1; i >= 1; i-- )
{
if( strSource.SubString( i, strToken.Length() ) == strToken )
{
return i;
}
}
return -1;
}
사용예)
//=============================================================================
void __fastcall TForm1::Button2Click(TObject *Sender)
{
String strSource = "1234567890123456789012345";
String strToken = "123";
ShowMessage( ReverseFind( strSource, strToken ) );
}
long TForm1::ReverseFind( String strSource, String strToken )
{
for( long i = strSource.Length() - strToken.Length() + 1; i >= 1; i-- )
{
if( strSource.SubString( i, strToken.Length() ) == strToken )
{
return i;
}
}
return -1;
}
//=============================================================================
|