2011-03-12 8 views
3

C++에서는 Sinatra, Frank와 같은 많은 이름을 가진 전화 번호부가 있는데 사용자가 문자열을 입력하여 파일을 검색 할 수있게하려고합니다. 사용자가 원하는 길이의 문자열을 입력하면 어떻게 "Sinatra, Frank"의 전체 문자열을 "Frank"또는 "Sinatra"또는 "atra"로 스캔하고 어떤 이름이 속하는지 봅니 까?문자열 내의 하위 문자열 찾기

답변

1

strstr()을 사용하면 문자열 내에서 하나의 하위 문자열을 찾을 수 있습니다.

6

당신은 std::string::find 방법을 사용할 수 있습니다 :

이 당신에게 (이 경우 9 인) 경기의 인덱스를 가져옵니다
string s = "Sinatra, Frank"; 
string::sizetype index = s.find("Frank"); 

.

0

그것은 std::string의 경우 "시나, 프랭크"문자열

2

질문의 .find() 방법을 사용할 수 있습니다 : 귀하의 예에서와 같이 (전화 번호부 새로운 행에 각 이름을 가진 플랫 파일입니다 " Sinatra, Frank "를"성, 이름 "등과 같은 형식으로 사용하거나 각 이름 문자열이 배열, 링크 된 목록 등의 노드 인이 전화 번호부의 구조가 있습니까?

참고 용 않는 strstr()

strstr(const char *s1, const char *s2) 

는 충분한 수있다 S1에서 S2 문자열의 첫 번째 발생을 찾아.

입력 문자열의 경우 크기 제한을 항상 확인해야합니다. 사용자가 일부 인터페이스를 통해 문자열을 입력하면 명시 적으로 처리하여 저장 공간을 초과하지 않도록하거나 악의적 인 문자 나 코드를 포함해야합니다.

Ken's solution는 원본 문자열에서 부분 문자열의 위치를 ​​생성하지만 'null'이 아니며 'hit'이 있다는 것을 의미합니다. 그러나 전화 번호부의 어느 항목이 적중했는지는 알려주지 않습니다. 당신의 코드는 의미있는 결과 집합을 반환 할 수 있도록 어느 항목/항목이 히트인지를 추적해야합니다.