2009/07/18
Float 형 문자열 검증하기
문자열이 Float 형 데이터가 맞는지 확인을 해야 했다.
가장 간단하고 확실한 방법은 정규식(Regular Expression)을 사용하면 될 것 같은데 문제는 MFC에서 정규식 라이브러리를 찾을 수 없다는 것이다. boost 라이브러리를 이용할 수도 있지만 현재 프로젝트에 추가 계획이 없어 검증하는 루틴을 만들어 보았다.
지수형 데이터 검증할 수 있어야 하지만 우선 단순 Float 형을 기준으로 검증 루틴을 만을어 보았다.
유효한 Float 형 문자열이 부호로 시작할 수 있으며 단 하나의 소수점만 갖고 있을 수 있다는 조건하에 구현하였다.
지수형(-123.45e-3)을 포함한 검증 루틴은 나중에 한번 만들어 보아야 겠다.<
Original Post : http://neodreamer-dev.tistory.com/308
가장 간단하고 확실한 방법은 정규식(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
Labels:
C++
,
Float Validation
,
Regular Expression
,
TistoryOldPost
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment