由于字符是由数字组成的ASCII,ASCII所以我们可以先将char类型转换为int数组内部的类型,然后通过使用qsort()我们可以适当地重新排列它们。char然后在重新排列时将它们转换为新的。
以下代码是一个示例:
#include <iostream>
#include <cstdlib>
#include <string>
#include <vector>
#include <algorithm>
int main ()
{
std::ios_base::sync_with_stdio(false);
std::string order;
std::cout << "Input the alphabet order: ";
std::getline(std::cin, order);
int Alphabet[26];
std::string::iterator iter;
for(iter = order.begin();iter != order.end(); iter++){
Alphabet[order.find(*iter)] = *iter;
}
qsort (Alphabet, order.length(), sizeof(int), [](const void* a, const void* b)->int{
return (*(int*)a - *(int*)b );
});
std::vector<int> Filter;
for(int x = 0; x < order.length(); x++){
if(std::find(Filter.begin(), Filter.end(), Alphabet[x]) == Filter.end()){
Filter.push_back(Alphabet[x]); // to filter out repetitive characters.
}
}
std::vector<int>::iterator Iter;
std::cout << "ALPHABET: ";
for(Iter = Filter.begin(); Iter != Filter.end(); Iter++){
std::cout << static_cast<char>(*Iter);
}
std::cout << std::endl;
return 0;
}