Cómo hacer espacio para las cadenas de ancho en c ++
El programador de C ++ se requiere a menudo para manipular cadenas de caracteres anchos. La biblioteca estándar de C ++ incluye funciones para manejar cadenas de caracteres anchos. Algunas de estas funciones se enumeran en esta tabla.
Nombre | Operación |
---|---|
int wcslen (cadena) | Devuelve el número de caracteres anchos en una cadena, notincluding el nulo de terminación. |
wchar_t * wcscpy (destino, origen) | Copias de la amplia cadena de origen en una matriz de destino. |
wchar_t * wcscat (destino, origen) | Concatena los amplia cadena de origen en el extremo de la cadena targetwide. |
wchar_t * wcsncpy (destino, origen, n) | Copia una amplia cadena de hasta npersonajes de la cadena de origen en una matriz de destino. |
wchar_t * wcsncat (destino, origen, n) | Concatena la cadena de origen en el extremo de la targetstring o n personajes, lo que comesfirst. |
wchar_t * wcsspn (cadena, patrón) | Busca la dirección de la primera ocurrencia de patrón en string.Returns un nulo si no se encuentra patrón. |
int wcscmp (source1, source2) | Compara dos cadenas de ancho. Devuelve -1 si se produce source1 antes source2 en el diccionario y 1 si later.Returns 0 si las dos cadenas coinciden exactamente. |
int wcsncmp (source1, source2, n) | Compara el primero n amplia charactersin dos cadenas de ancho. |
Recuerde que los caracteres de ancho se utilizan para aplicaciones que deben soportar las lenguas extranjeras, donde unos míseros 255 caracteres diferentes pueden no ser suficientes.
A continuación se muestra una amplia versión carácter del Concatenar programa:
// ConcatenateWide - concatenar dos cadenas de ancho // con un "-" en el medio usando rutinas de biblioteca # include#include #include using namespace std-int main (int nNumberofArgs, char * pszArgs []) {// leer primera cadena ... wchar_t wszString1 [260] -cout lt; lt; "Introduzca cadena # 1:" - wcin.getline (wszString1, 128) - // ... ahora la segunda cadena ... wchar_t wszString2 [128] -cout lt; lt; "Introduzca cadena # 2:" - wcin.getline (wszString2, 128) - // ahora virar el segundo en la final de la primera // con un guión en betweenwcsncat (wszString1, L "-", 260) -wcsncat (wszString1 , wszString2, 260) -wcout lt; lt; L " n" lt; lt; wszString1 lt; lt; endl - // espera hasta que el usuario esté listo antes del programa // terminar para permitir al usuario ver el resultscout programa lt; lt; "Pulse Intro para continuar ..." lt; lt; endl-cin.ignore (10, ' n') - cin.get () - volver 0-}
El programa de cadena de caracteres anchos es similar a la de un solo byte primo cadena de caracteres a excepción de las siguientes diferencias:
Las variables se declaran wchar_t Más bien que Char.
Caracteres constantes y cadenas constantes aparecen precedidos de un L, como en L " Se trata de una amplia cadena # 148 ;.
Los objetos WCIN y wcout se utilizan en lugar de cin y cout para entrada y salida.
los wcs # 133- funciones aparecen en lugar del estrecho str # 133- funciones.
La salida de ConcatenateWide parece idéntica a la de la carac-basado Concatenar programa para los que lo hacen la mayoría de su entrada / salida en las lenguas europeas. El tema de los programas de escritura capaz de manejar múltiples idiomas con alfabetos diferentes y las reglas de la gramática se conoce como localización.
ANSI C ++ incluye un tipo de cuerda diseñado para hacer que sea más fácil de manipular cadenas de texto.