2009/07/18

Float 형 문자열 검증하기

문자열이 Float 형 데이터가 맞는지 확인을 해야 했다.



가장 간단하고 확실한 방법은 정규식(Regular Expression)을 사용하면 될 것 같은데 문제는 MFC에서 정규식 라이브러리를 찾을 수 없다는 것이다. boost 라이브러리를 이용할 수도 있지만 현재 프로젝트에 추가 계획이 없어 검증하는 루틴을 만들어 보았다.



지수형 데이터 검증할 수 있어야 하지만 우선 단순 Float 형을 기준으로 검증 루틴을 만을어 보았다.



유효한 Float 형 문자열이 부호로 시작할 수 있으며 단 하나의 소수점만 갖고 있을 수 있다는 조건하에 구현하였다.



bool bDotFound = false;

for ( int digit = 0; digit < strData.GetLength(); ++digit )
{
TCHAR ch = strData[ digit ];

// 시작이 아닌 곳에 부호가 나타날 경우
if ( digit != 0 && ( ch == _T('+') || ch == _T('-') ) )
{
return false;
}

// 소수점에 대한 처리
if ( ch == _T('.') )
{
if ( bDotFound )
{
return false;
}

bDotFound = true;
}

// Float 형 문자열이 갖을 수 없는 문자열을 갖고 있을 경우
if (( ch < _T('0') || ch > _T('9')) && ch != _T('.') && ch != _T('+') && ch != _T('-'))
{
return false;
}
}

return true;





지수형(-123.45e-3)을 포함한 검증 루틴은 나중에 한번 만들어 보아야 겠다.<

Original Post : http://neodreamer-dev.tistory.com/308

No comments :

Post a Comment