web-dev-qa-db-fra.com

Tri des caractères d'une chaîne C ++

Si j'ai une chaîne, existe-t-il une fonction intégrée pour trier les caractères ou devrais-je écrire le mien?

par exemple:

string Word = "dabc";

Je voudrais le changer pour que:

string sortedWord = "abcd";

Peut-être que l'utilisation de char est une meilleure option? Comment ferais-je cela en C++?

68
gprime

Il y a n algorithme de tri dans la bibliothèque standard, dans l'en-tête <algorithm>. Cela se fait sur place, donc si vous procédez comme suit, votre mot d'origine sera trié.

std::sort(Word.begin(), Word.end());

Si vous ne voulez pas perdre l'original, faites d'abord une copie.

std::string sortedWord = Word;
std::sort(sortedWord.begin(), sortedWord.end());
128
std::sort(str.begin(), str.end());

Voir ici

13
dreamlax

Vous devez inclure sort la fonction qui est dans algorithm le fichier d'en-tête qui est un bibliothèque de modèles standard dans c ++.

Utilisation : std :: sort (str.begin (), str.end ());

#include <iostream>
#include <algorithm>  // this header is required for std::sort to work
int main()
{
    std::string s = "dacb";
    std::sort(s.begin(), s.end());
    std::cout << s << std::endl;

    return 0;
}

SORTIE:

abcd

1
abe312

Vous pouvez utiliser la fonction sort () . sort () existe dans algorithm fichier d'en-tête

        #include<bits/stdc++.h>
        using namespace std;


        int main()
        {
            ios::sync_with_stdio(false);
            string str = "sharlock";

            sort(str.begin(), str.end());
            cout<<str<<endl;

            return 0;
        }

Sortie:

achklors

0
rashedcs