문제

캐릭터 배열이 있고 예를 들어 문자열 문자와 일치하는지 알아 내려고합니다.

char value[] = "yes";
if(value == "yes") {
   // code block
} else {
   // code block
}

이로 인해 다음과 같은 오류가 발생했습니다. 문자열 리터럴 결과와 비교하여 지정되지 않은 동작이 비교되었습니다. 나는 또한 다음과 같은 것을 시도했습니다.

char value[] = "yes";
if(strcmp(value, "yes")) {
   // code block
} else {
   // code block
}

이것은 컴파일러 오류가 발생하지 않았지만 예상대로 작동하지 않습니다.

도움이 되었습니까?

해결책

std::strcmp 문자열이 같으면 0을 반환합니다.

다른 팁

STRCMP 문서를 확인하십시오. 힌트 : 부울 가치를 반환하지 않습니다.

ETA : == 일반적으로 작동하지 않습니다 cstr1 == cstr2 비교 포인터, 따라서 비교는 경우에만 해당됩니다 cstr1 그리고 cstr2 두 가지가 발생하더라도 두 가지가 사전에 동일한 문자열을 참조하더라도 동일한 메모리 위치를 가리 킵니다. 당신이 시도한 것 (cstring을 문자 그대로 비교, 예를 들어 cstr == "yes") 특히 표준이 필요하지 않기 때문에 작동하지 않습니다. 합리적인 구현에서 나는 그것이 폭발 할 것이라고 의심하지만 cstr == "yes" 성공하지 못할 것 같지 않습니다 cstr 문자열이 상수 인 주소를 언급 할 가능성은 거의 없습니다. "yes" 에 살고.

STRCMP는 두 줄의 상대 순서가 무엇인지 나타내는 3 개 상태 값을 반환합니다. strcmp (a, b)와 같은 호출을 할 때 함수가 반환됩니다.

  • a <b 일 때 값 <0
  • 0 a == b
  • a> b 일 때 값> 0
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top