私は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
私はcompare関数をスキップしました...それらのすべてがfalseを返します。私はすべての文字をskkipingせずに文字列全体を比較する必要があります。 –