2011-03-30 2 views
7

두 개의 문자열을 비교하고 싶습니다. strcmp으로 가능합니까? (노력했지만 작동하지 않는 것 같습니다). string::compare은 해결책입니까?strcmp 또는 string :: compare?

이 외에도 stringchar을 비교하는 방법이 있습니까?


초기 의견을 보내 주셔서 감사합니다. 나는 C++로 코딩하고 있었고, 그렇습니다. 여러분 중 일부가 언급 한 것처럼 std::string이었습니다. 일반 지식을 배우고 싶었고 꽤 긴 코드이므로 코드를 게시하지 않았으므로이 질문과 관련이 없습니다.

저는 C++과 C의 차이점을 배웠다고 생각합니다. 감사합니다. 이제 과부하가 걸린 운영자를 사용하려고합니다. 그런데 그런데 string::compare도 효과가있었습니다.

+0

예약, 내 HTC에 입력을 "작동하지 않는 것 같아?" 매개 변수 란 무엇이며 결과는 무엇입니까? –

+0

C++로 프로그래밍하는 경우에는 C++의 숙어 (즉, C++'string'과 그와 관련된 메소드)를 사용해야합니다. C에서는'char *'와'strcpy'와 같은 C 관용구를 사용합니다. –

+0

"작동하지 않는 것 같다"는 것은 무엇을 의미합니까? – helloworld922

답변

21

C++의 경우 std::string을 사용하고 string::compare을 사용하여 비교하십시오.

C의 경우 strcmp. 귀하의 (내가 귀하의 프로그램을 의미) 문자열 (일부 이상한 이유로 ) nul되지 않습니다 문자열을 strncmp 대신 사용하십시오.

std::string 에 대한 ==처럼 간단 사람 하지 사용 무언가를 것?

12

std::string을 가정 할 때 과부하 연산자 인 str1 == str2, str1 < str2을 사용해야하는 이유는 무엇입니까?

+0

ildjarn의 게시물에 대한 내 의견을 참조하십시오. – diverscuba23

1

C++을 사용하는 경우 C++ 함수 즉, string::compare. C를 사용하고는, 문자열 char*를 사용 strcmp

3

std::basic_string::comparestd::basic_string operators reference이 (특히 등, operator==, operator!=, operator<이 존재)를 참조하십시오 사용하도록 강요합니다. 그 밖의 무엇이 필요합니까?

+0

당신은 또한 문자열이 동일하거나 더 크거나 또는 하나의 다른 문자열보다 작 ​​으면 (어떤 트리가 트리 구조로 내려 갔는지 생각해보십시오), strcmp와 같은 함수가 더 유용 할 것입니다. – diverscuba23

+0

@ diverscuba23 : 참으로 공정한 점. : -] 어떤 경우에는 여전히'std :: string :: compare'가 존재하는데, 이는 C++의'strcmp '보다 선호되어 @Paul R이 주석 처리했기 때문입니다. 내 게시물을 수정하겠습니다. – ildjarn

1

질문에 "문자열을 char과 비교하는 방법이 있습니까?" "특정 문자가 문자열에 포함되어 있는지 어떻게 알 수 있습니까?" 그렇다면 C 라이브러리 기능은 다음과 같습니다.

char *strchr(const char *s, int c); 

이 작업을 수행합니다.

- 피트

1

std :: string에는 포함 된 null 문자가 포함될 수 있습니다!

*이 완 (...)가 첫 번째 널 문자까지 비교, C 스타일의 문자열을 비교하는 것입니다 (또는 바이트 NR 지정된 최대/문자)

문자열 : 실제로으로 구현 제품 비교 wstring과 같은 다른 유형에서도 작동 할 것으로 기대할 수 있도록 basic_string 템플릿을 사용하십시오.

"문자열을 char과 비교"하는 불분명 한 구문에서 문자를 * 문자열과 비교할 수 있습니다.첫 번째 항목 (문자열 :: find_first_of 및 문자열 :: find_first_not_of)

면책 조항()를 시작하거나 조회 : - 좀 더 구체적으로 할 수 오타 :