메모리 버퍼와 상수 문자열을 비교하는 정확한 C++ 방법은 무엇입니까? strcmp(buf, "sometext")
? 나는 임시 std :: string 객체를 생성 한 결과 불필요한 메모리 복사를 피하고자한다.C++에서 const char *와 버퍼를 비교
감사합니다.
메모리 버퍼와 상수 문자열을 비교하는 정확한 C++ 방법은 무엇입니까? strcmp(buf, "sometext")
? 나는 임시 std :: string 객체를 생성 한 결과 불필요한 메모리 복사를 피하고자한다.C++에서 const char *와 버퍼를 비교
감사합니다.
그냥 어떤지를 확인하는 경우, 당신은 당신의 버퍼가 텍스트보다 작은 경우이 추가 논리가 필요합니다 물론 std::equal
#include <algorithms>
const char* text = "sometext";
const int len = 8; // length of text
if (std::equal(text, text+len, buf)) ...
사용할 수 있습니다
memcmp를 사용하고 마지막 매개 변수로 최소 2 크기의 데이터를 사용합니다.
또한 2 가지 크기가 동일한 지 확인하십시오. 그렇지 않으면 가장 짧은 접두어를 단순히 비교하는 것입니다. 당신이 당신의 버퍼의 내용을 알고 있다면 당신은 그것을 좋아 할 수
그의 데이터는 아직 문자열에 포함되어 있지 않습니다. –
고마워요, 고쳐주세요. –
,
const char* const CONST_STRING = "sometext";
strcmp(buf,CONST_STRING);
위의 모든 대답에서 나는 C++/STL이 그런 비교를 할 수있는 도구가 없으며 간단한 C 방식을 사용해야한다는 것을 이해합니다. – jackhab
어떤 비교가 있습니까? 실제 코드를 게시하십시오! –
을 strcmp이 좋다. std::strncmp
은 버퍼 오버 플로우에 대해 좀 더 많은 보안을 제공 할 수 있습니다.
몇 가지 코드를 게시하시기 바랍니다 당신이 물어 보는 것을 보여주는 std :: string을 사용합니다. –