2016-10-29 2 views
-4

리눅스 우분투에서 .cc 파일을 컴파일했습니다. 두 문자열을 비교하기 위해 srtcmp() 함수를 사용하고 싶습니다. 문자열은 일정하지 않습니다. 사용자는 둘 다 줄 것이다,하지만 난이 오류를 얻을 :g ++에서 strcmp를 사용하는 방법

오류 :

if (!strcmp(a[i].personalNo,pcode)){ 
    #some code 
} 
: 'const를 숯불 *'에서 '문자'[-fpermissive]

이 내 코드에서 잘못된 변환

두 개의 문자열을 비교하기 위해 strcmp() 대신 사용할 수있는 함수는 무엇입니까?

+8

한 문자열하지만, ​​하나의 문자가 아닌 오류 메시지가 말한다 주목'char'하지 :. 그런 다음 (제공 모두 personalNopcodestd::string이라는 것을 할 단지 수 'char *'. 그런데 C++에서는 오래된 C 스타일 문자열 대신에''std :: string' (http://en.cppreference.com/w/cpp/string/basic_string)을 사용해야합니다. 포인터. –

+5

'personalNo'와'pcode' 타입은 무엇입니까? –

+2

'a [i] .personalno'와'pcode'가 올바른 타입이라면 우리에게 보여준 코드는 완벽하게 유효합니다. 따라서 코드에 문제가 있습니다. 우리에게 알려주지 않았습니다. [mcve]를 읽고 실제 코드를 보여주기 위해 질문을 업데이트하십시오. –

답변

1

문제는 기능이 아니라 사용하는 방식에 달려 있습니다.

int strcmp (const char * str1, const char * str2); 

strcmpconst char * 인수를 취합니다.

이 오류는 함수에 char을 부여했음을 나타내므로 문제가 personalNo 및/또는 pcode 유형에 있습니다. 당신의 실수는 아마도이 두 변수의 유형 선언에있을 것입니다. char *은 한 문자 만 저장하고 char *은 문자 배열을 사용하므로 문자는 char *으로 변경할 수 있습니다.

또한 C++에서 두 문자열을 비교하는 또 다른 방법은 std::string을 사용하는 것입니다. 당신이 전달하는 인수

if (a[i].personalNo != pcode){ 
    #some code 
} 
+1

작동합니다, 감사합니다. 너 너무 많아. –

관련 문제