0
string word1 = "misisipi";
string word2 = "mississippi";

これらの文字列を何らかの方法で「比較」し、一般的ではない文字を「投げ出す」ことができるようにしたいと思います。たとえば、word2はに切り詰められ"misisipi"、「S」を順番に保持するようにします。word1また、すべての文字がに​​含まれているため、変更されませんword2。文字列内の要素を削除する方法を認識していますが、今回は順序を維持したいと思います。たとえば、順序を維持しなかった場合、比較後word2になりますが"missipi"、これは私が望むものではありません。

4

1 に答える 1

0

の各要素を反復処理しながら、有効なword2文字をにコピーしてみてください。word1word1

std::string temp;
std::string::iterator w2 = word2.begin();

for(std::string::iterator w1 = word1.begin(); w1 != word1.end(); ++w1)
{
    for(; w2 != word2.end(); ++w2)    // Move through word2...
    {
        if(*w1 == *w2)    // Copy the character into temp when found.
        {
            temp += *w2;
            break;
        }
    }
}

std::cout << temp << std::endl;

temp速度が必要な場合は、事前に割り当てることをお勧めします。

于 2012-04-11T01:43:55.967 に答える