C++文字配列ソート関数を教えてください
C++文字配列ソート関数を教えてください
配列に格納されている文字列をソートして完全一致するかを確認するロジックを作成したいのですが、上手くいきません。ネットなどでいろいろ調べたのですが><
一応、以下に今の状態のソースを貼りました。
class StringSuzeLess
{
public;
bool operator()( const std::string& Ihs, const std::string& rhs ) const
{
retrun ihs.size() < rhs.size();
}
}
int main()
{
// 文字列格納変数
chra str1[10][5+1];
char str2[10][5+1];
// 初期化
memset(str1, 0x00, sizeof(str1));
memset(str2, 0x00, sizeof(str2));
// 文字列設定
strcpy(str1[0], "AAAAA");
strcpy(str1[1], "BBBBB");
strcpy(str1[2], "CCCCC");
strcpy(str2[0], "CCCCC");
strcpy(str2[1], "BBBBB");
strcpy(str2[2], "AAAAA");
std::vector< std::string > vsmozi1;
std::vector< std::string > vsmozi2;
// ベクタに文字列設定
for(short LoopCnt = 0; LoopCnt < 3; LoopCnt++)
{
vsmozi1.push_back( std::string( str1[LoopCnt] ) );
}
for(short LoopCnt = 0; LoopCnt < 3; LoopCnt++)
{
vsmozi2.push_back( std::string( str2[LoopCnt] ) );
}
// ソート
std::stable_sort( vsmozi1.begin(), vsmozi1.end(), StringSuzeLess());
std::stable_sort( vsmozi2.begin(), vsmozi2.end(), StringSuzeLess());
// ソート後の先頭から取得
for(short LoopCnt = 0; LoopCnt < 3; LoopCnt++)
{
// 不一致の場合
if(vsmozi1[LoopCnt] != vsmozi2[LoopCnt])
{
return -1;
}
}
return 0;
}
お礼
返信が遅れてしまい申し訳ありません。 無いならばStringクラスを直接書き換えるしかないのですね・・・ 勉強になりました。ありがとうございます。