나는 코드화와의 std :: string 비교에 문제가 있다고 생각합니다. 문제는 내가받는 문자열을 비교하는 것을 싫어한다는 것입니다. 그리고 나는 그것이 얼마나 성질이 좋지 않은 문자가있는 스페인어 문자열과 함께 성문화의 종류를 알지 못합니다. 나는 s_area.m_s_area_text를 바꿀 수 없기 때문에 s2 문자열을 동일한 값으로 설정해야하고 다른 체이스를위한 일반적인 방법으로 그것을 수행하는 방법을 모른다.C++ std : string 비교 코드화 문제
std::string s2= "Versión de sistema";
std::cout << s_area.m_s_area_text << std::endl;
for (const char* p = s2.c_str(); *p; ++p)
{
printf("%02x", *p);
}
printf("\n");
for (const char* p = s_area.m_s_area_text.c_str(); *p; ++p)
{
printf("%02x", *p);
}
printf("\n");
하여 실행 한 결과이다 : 분명히
Versi├│n de sistema
5665727369fffffff36e2064652073697374656d61
5665727369ffffffc3ffffffb36e2064652073697374656d61
아니라 동일한 바이트 값의 모든 비교에있어서 실패가있는 2 개 스트링 같이 strncmp, STD : 문자열 ==을 std : sstring.comapre 등
어떻게해야합니까 s_area.m_s_area_text 문자열 감동에 대한 아이디어?
코드에서 문자열을 비교하지 마십시오. – user463035818
바이트를 비교하지 않는 비교 함수가 필요한 것처럼 보입니다. 이러한 함수를 작성하거나 두 문자열을 표준 표현으로 변환하여 바이트 비교 함수가 충분할 수 있습니다. 그것은 무시할 바이트에 따라 다릅니다. – nwp
비교 함수를 건너 뛰었습니다 ... 모두 false를 반환합니다. 나는 모든 캐릭터를 skkiping하지 않고 전체 문자열을 비교해야합니다. –