Nota inicial: Por favor, el código ponlo con las etiquetas GeSHi, quedará más claro y legible. Gracias.
"ordenar" strings puede ser una tarea todo lo sencilla o complicada que quieras:
* ¿Quieres que la ordenación sea sensible al uso de mayúsculas?
* ¿Te resulta indiferente que las palabras con letras acentuadas las ponga en posiciones "extrañas"?
Si has respondido "SI" a ambas preguntas, puedes hacer uso de la ordenación básica que viene por defecto en std::string. Es decir, puedes usar los operadores de comparación:
Salida:
El mecanismo de ordenación de los operadores de comparación ( '>', '<', '==', '!=', '>=', '<=' ) vendría a ser algo tal que:
Nota que para simplificar estoy asumiendo que ambos strings tienen la misma longitud.
"ordenar" strings puede ser una tarea todo lo sencilla o complicada que quieras:
* ¿Quieres que la ordenación sea sensible al uso de mayúsculas?
* ¿Te resulta indiferente que las palabras con letras acentuadas las ponga en posiciones "extrañas"?
Si has respondido "SI" a ambas preguntas, puedes hacer uso de la ordenación básica que viene por defecto en std::string. Es decir, puedes usar los operadores de comparación:
Código (cpp) [Seleccionar]
std::string cad1 = "bcd";
std::string cad2 = "abc";
if ( cad1 > cad2 )
{
std::string temp = cad1;
cad1 = cad2;
cad2 = temp;
}
std::cout << cad1 << " " << cad2 << std::endl;
Salida:
Código [Seleccionar]
abc bcd
El mecanismo de ordenación de los operadores de comparación ( '>', '<', '==', '!=', '>=', '<=' ) vendría a ser algo tal que:
Código (cpp) [Seleccionar]
bool operator<( const std::string& cad1, const std::string& cad2 )
{
bool to_return = true;
for ( unsigned int i = 0; i < cad1.size( ); ++i )
{
if ( cad1[ i ] > cad2[ i ] )
{
to_return = false;
break;
}
else if ( cad1[ i ] < cad2[ i ] )
break;
}
return to_return;
}
Nota que para simplificar estoy asumiendo que ambos strings tienen la misma longitud.