2011-08-17 4 views
2

제목과 같이 빠른 방법이 있습니까?cpp 문자열이 유효한 도메인 이름인지 확인하십시오.

http://asd.asdasd.asd 

가 유효한 도메인 이름입니다

http://asdasd/ 

이 올바른 도메인 이름이 아닙니다 : 내가 예를 들어, 고용, 차별화 할 수 아무것도 필요 없어요.

내가 솔루션을 검색하려고 가장 가까운 (단순) 솔루션은 이것이다 : in python

하지만 그게 전부 파이썬, 나는 C에서 할 필요 ++. 어떤 도움이 필요합니까?

"문자열 조작"을 통해서만 수행 할 수 있습니까? 하위 문자열처럼?

+3

정규 표현식 자신을 가리 파이썬 응답에서이 패턴? Raymond Chen은 "이제는 두 가지 문제가 있습니다"라고 말합니다. – n8wrl

+0

흠 .. 정규식 이외에? 도서관에서 아주 두꺼운 책을 보았습니다. 정규 표현식이었습니다. 나는 그것을 미래에 연구 할 것이지만, 지금은 시작하지 않았다. 나는 단지 C++을 시작했다. – akow

+0

글쎄, 정말로 정확하고 싶다면, rfc를보고 문법에 대한 파서를 구현하자. – PlasmaHH

답변

0

나는 이것이 libcurl으로 이루어질 수 있다고 생각합니다.

0

http://... 도메인 이름하지만 URL이 아니라고, (예 : 로컬 네트워크에 같은) 검색 도메인과 같은 설정이 다음 순전히 문자열 구문을 검사하는 경우 asdasd 유효한 도메인 이름이라는 사실을 드러내는 수 strncmp, strchrstrstr의 간단한 세트와 함께 할 것은

char *str = "http://abd.xxx"; 

bool valid = strncmp(str,"http://",7) && str[7] && strchr(str+7,'.'); 

이 문자열은 http로 시작하는지 확인해야합니다 명령 : //하고 HTTP 후 더 있다는 것을 : // 그리고 그 후 더 그 포함 도트 - URL에 http://expample.com/mypath.txt과 같은 실제 경로가 포함 된 위치를 처리하려는 경우, 이 예제는 더욱 복잡해졌지만 필요한 경우이를 지정하지 않았습니다.

다른 방법으로 할 수 use regex 당신은 당신이

+0

유효한 로컬 호스트 이름 일 수 있지만 임의의 TLD가 도입 된 이후 잠재적으로 유효한 FQDN이기도합니다. –

+0

여기에 동의하지 않습니다. 실제로 이름이 유효한지 알아내는 유일한 방법은 호스트 조회를 수행하는 것입니다.하지만 OP가 요구하는 것이 아닙니다. 질문은 패턴 일치에 관한 것입니다. – Soren

+0

그 질문에 대한 정답은 "문자열 조작을 사용하여 수행 할 수 있습니까?" "아니오, 호스트 조회가 필요합니다." –

관련 문제