La razón por la que trim() no está en la biblioteca estándar es que cuando se creó el último estándar, tuvieron que encontrar un equilibrio entre formalizar el comportamiento actual (no agregar nada nuevo, simplemente estabilizar lo que ya existía) y agregar nuevo funcionalidad. En general, prefirieron no agregar una función a menos que 1) sea imposible de lo contrario, o 2) que haya inconvenientes significativos para usar bibliotecas de terceros. Hacer demasiados cambios serían
- compatibilidad ruptura con el código existente (que pueden haber definido su propio ajuste()
- Añadir más trabajo para los autores de compiladores (que ya tenía una enorme cantidad de trabajo por delante de ellos)
- que el lenguaje sea más difícil de aprender y utilizar.
con trim(), no hay grandes problemas de interoperabilidad. mientras su tercero TRIM() aplicación toma una cadena y devuelve una cadena, que Don realmente me importa dónde está definido. Por lo tanto, no es realmente necesario En la biblioteca estándar. Puede ser facilmente facilitado por otras bibliotecas.
Por el contrario, algo así como la clase de cadena o vector, son clases que debe proporcionar la biblioteca estándar, porque si utiliza una clase de cadena personalizada, solo funcionarán las operaciones de cadena de esa biblioteca. Con una cadena de biblioteca estándar, las bibliotecas de terceros pueden orientar esta definición de cadena común, y todos ganan.
Cuando la última norma salió, Herb Sutter escribió un post que describe muy bien here
Por supuesto, sería bueno tener una función trim(), pero tenían más importantes que hacer. Primero tenían que estandarizar todos los elementos básicos. No creo que C++ 0x agregue una función de recorte, pero agregará una gran cantidad de otras utilidades de conveniencia que en el '98 se consideraron "innecesarias" o demasiado especializadas.
Esta es la mejor de las implementaciones más cortas que he visto, y ni siquiera necesitó hacer ningún truco para hacerlo. ¡Buen trabajo! – leetNightshade