fundir
Poster original- 4 de diciembre de 2006
- Katy, Texas
- 8 de junio de 2007
(Además, ahora tengo la misión de encontrarlo ...)
Gracias, Todd T
fundir
Poster original- 4 de diciembre de 2006
- Katy, Texas
- 8 de junio de 2007
veo
- Oct 25, 2004
- 8 de junio de 2007
Si no quiere o necesita preocuparse por las configuraciones regionales, entonces:
_stricmp (str1.c_str (), str2.c_str ())
Es la solución más simple (también bastante eficiente).
Las configuraciones regionales complican un poco las cosas (bueno, son realmente las deficiencias de la biblioteca estándar las que hacen que esto sea tan complicado).
Déjame ver si puedo encontrar un enlace para algo que se ocupe de las configuraciones regionales ...
Aquí hay uno: http://lafstern.org/matt/col2_new.pdf
No sé si realmente sabe de lo que está hablando, pero parece que sí. Continúa un rato sobre esto para que pueda comprender el problema, pero puede ir al final y ver el último bloque de código para encontrar su mejor solución. T
fundir
Poster original- 4 de diciembre de 2006
- Katy, Texas
- 9 de junio de 2007
Gracias por la confirmación, me alegro de ver que no me lo estaba perdiendo.
Todd
Código:
#include #include using namespace std ; bool case_insensitive_compare( string a, string b) { char char1, char2, blank = ' ' ; int len1 = a.length() ; int len2 = b.length() ; for (int i = 0 ; i input ; result = case_insensitive_compare(input, hello) ; std::cout << 'Result of compare of ' << input << ' to ' << hello << ' is ' << (result ? 'true' : 'false' ) << endl ; return 0; }
T fundir
Poster original- 4 de diciembre de 2006
- Katy, Texas
- 10 de junio de 2007
iSee dijo: Si no quiere o necesita preocuparse por las configuraciones regionales, entonces:
_stricmp (str1.c_str (), str2.c_str ())
Es la solución más simple (también bastante eficiente).
Esta bien me rindo. ¿De dónde se te ocurrió? _stricmp ?
Todd EN
Wittegijt
- Feb 18, 2007
- Eindhoven
- 11 de junio de 2007
Toddburch dijo: OK, me rindo. ¿De dónde se te ocurrió? _stricmp ?
Todd
Es una cosa de Windows. Las bibliotecas de Unix usan strcasecmp, está en formato.
Wittegijt.
veo
- Oct 25, 2004
- 11 de junio de 2007
Toddburch dijo: OK, me rindo. ¿De dónde se te ocurrió? _stricmp ?
Todd
OK, perdón por tirar eso por ahí.
Pensé que era parte de la biblioteca C estándar, pero no lo es. Simplemente aparece, extraoficialmente, con diferentes nombres, en varias implementaciones de la biblioteca C. Por lo tanto, una comparación que no distingue entre mayúsculas y minúsculas tampoco es una parte oficial de la biblioteca oficial de C. Caray. Parece una omisión tan grande. En VS, es _stricmp () o stricmp (), en CodeWarrior para Mac es stricmp () o strcasecmp (), y en OS X 10.4 / Xcode es strcasecmp ().
Ahora que lo pienso, el subrayado inicial debería haberme dado la pista.
Supongo que si desea cumplir con el estándar C, debe implementar el suyo propio usando tolower () (o toupper ()) en un bucle.
Veamos que un primer paso podría ser (esto está fuera de mi cabeza, NO es un código probado):
Código:
#include ... int mystricmp(const char* str1, const char* str2) { if (str1 == str2) return 0; else if (str1 == NULL) return -1; else if (str2 == NULL) return 1; else { while (tolower(*str1) == tolower(*str2) && *str1 != 0 && *str2 != 0) { ++str1; ++str2; } if (*str1 *str2) return 1; else return 0; } }
De todos modos, de nuevo, perdón por el mal consejo. Supongo que no he hecho mucho código C / C ++ en Mac OS X donde quería evitar la API del sistema operativo (CFString, etc.) desde los días de CodeWarrior ... T
fundir
Poster original- 4 de diciembre de 2006
- Katy, Texas
- 11 de junio de 2007
OK, ahora a strcasecmp () . El sitio web cppreference.com que he estado usando parece ser solo C / C ++ estándar. Busqué en Google un sitio de referencia específico de Mac OS X XCode y no encontré ninguno. ¿Qué es un buen sitio web de referencia de Mac OS X C ++? ¿O hay una referencia de C ++ integrada en la ayuda de XCode en algún lugar y simplemente no la he encontrado? O, fallando todo eso, ¿hay uno en el Centro de Desarrollo de Apple que también me he perdido?
Tan grandes como son las imágenes de disco de XCode que descargo e instalo cuando se me solicita, seguramente hay una referencia de lenguaje allí, alguien; quiero decir, las cosas de Java que descargué inicialmente eran ENORMES.
Todd
Krevnik
- Sep 8, 2003
- 11 de junio de 2007
Toddburch dijo: OK, ahora para strcasecmp () . El sitio web cppreference.com que he estado usando parece ser solo C / C ++ estándar. Busqué en Google un sitio de referencia específico de Mac OS X XCode y no encontré ninguno. ¿Qué es un buen sitio web de referencia de Mac OS X C ++? ¿O hay una referencia de C ++ integrada en la ayuda de XCode en algún lugar y simplemente no la he encontrado? O, fallando todo eso, ¿hay uno en el Centro de Desarrollo de Apple que también me he perdido?
Está ahí, pero no creo que repase las funciones de C que están en la capa POSIX, solo todas las adiciones de Apple a POSIX. Puede utilizar el terminal para acceder a las páginas de manual de algunas de estas funciones. 'man strcasecmp' lo llevará directamente a la página que habla de esa función y describirá cómo usarla.
veo
- Oct 25, 2004
- 11 de junio de 2007
http://developer.apple.com/documentation/Darwin/Reference/ManPages/index.html
que es una tabla de contenido para todo en las páginas de manual de OS X, incluidas las funciones de la biblioteca C.
La biblioteca de referencia de Xcode accede a las páginas de manual además de otros recursos, por lo que todos están disponibles a través de Xcode (yo uso 'Buscar texto seleccionado en la referencia de API' todo el tiempo).
Parece que las funciones de C están en la sección 3. Parece que la documentación de cada función contiene una sección 'estándar' o 'historial' que proporciona información sobre el estándar con el que cumple la función. Aparentemente strcasecmp () se movió de 'string.h' a 'strings.h' por razones de cumplimiento. No estoy seguro exactamente de qué manera eso lo hace compatible. Supongo que significa que las funciones no estándar no deberían aparecer en string.h, por lo que lo movieron a un archivo de encabezado diferente. T
fundir
Poster original- 4 de diciembre de 2006
- Katy, Texas
- 11 de junio de 2007
Entradas Populares