Bonjour,
En travaillant sur une petite bibliothèque basée sur la SFML, j'ai créé un éditeur de texte et me suis dit que ce serait bien de pouvoir y appliquer des filtres, pour que l'utilisateur ne puisse taper que des chiffres par exemple.
Je me suis du coup rendu compte que sf::String ne permettait pas ce genre de chose.
Du coup j'ai codé un petit truc moi-même (voir plus bas), mais je me suis dit que ce serait pas mal de l'intégrer à la SFML.
Le code ci-dessous n'est qu'une suggestion, je pense que M.Gomilla (ou n'importe qui de plus expérimenté que moi) saura faire mieux.
typedef std::vector<sf::Uint32> CharFilter;
/**
* \brief Applies the given filter to the string.
*
* The filter will remove every character from str that is not in the filter, unless you set the 'exclusive' paramter to true, then it will do the opposite (and remove every character that is in the filter).
* An empty filter is considered as being "no filter", and thus do not have any effect.
*
* \param filter The filter to apply.
* \param Set to true* if you want the filter to be exclusive, set to false* otherwise.
*/
void String::applyFilter(CharFilter filter, bool exclusive = false)
{
if(!filter.empty())
{
for(std::size_t i = 0 ; i < m_string.getSize() ; i++)
if( ( std::find(filter.begin(), filter.end(), m_string[i]) != filter.end() ) == exclusive )
m_string.erase(i);
}
}