Cómo hacer espacio para amplios cadenas en c ++
El programador de C ++ es a menudo necesaria 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, no incluyendo el nulo de terminación. |
wchar_t * wcscpy (diana, fuente) | Copias de la amplia cadena de origen en una matriz de destino. |
wchar_t * wcscat (diana, fuente) | Concatena los amplia cadena de origen en el extremo del objetivo amplia cadena. |
wchar_t * wcsncpy (diana, fuente, norte) | Copias de una amplia cadena de hasta norte personajes de la cadena de origen en una matriz de destino. |
wchar_t * wcsncat (diana, fuente, norte) | Concatena la cadena de origen en el extremo del objetivo cuerda o norte caracteres, lo que ocurra primero. |
wchar_t * wcsspn (cadena, patrón) | Se encuentra la dirección de la primera ocurrencia del patrón en cadena. Devuelve un valor nulo si no se encuentra patrón. |
int wcscmp (Source1, source2) | Compara dos cadenas de ancho. Devuelve -1 si Source1 ocurre antes source2 en el diccionario y 1 si es posterior. Devuelve 0 si las dos cadenas coinciden exactamente. |
int wcsncmp (Source1, source2, norte) | Compara la primera norte caracteres anchos en dos cadenas de ancho. |
Recuerde que los caracteres de ancho se utilizan para aplicaciones que deben proteger los idiomas extranjeros, en los que unos míseros 255 caracteres diferentes pueden no ser suficientes.
A continuación se muestra una versión de caracteres anchos de la Concatenar programa:
// ConcatenateWide - concatenar dos cadenas de ancho // con una " - " en el medio usando rutinas de biblioteca # include#incluir #incluir using namespace std-int main (int nNumberofArgs, char * pszArgs []) {// leer primera cadena ... wchar_t wszString1 [260] -cout lt; lt; "Introduzca la cadena # 1:"-wcin.getline (wszString1, 128) - // ... ahora la segunda cadena ... wchar_t wszString2 [128] -cout lt; lt; "Introduzca la cadena # 2:"-wcin.getline (wszString2, 128) - // ahora virar el segundo en el extremo de la primera // con un guión en betweenwcsncat (wszString1, L" - ", 260) -wcsncat (wszString1, wszString2, 260) -wcout lt; lt; L"norte" lt; lt; wszString1 lt; lt; endl - // espera hasta que el usuario esté listo antes de la terminación del programa // para permitir al usuario ver el programa resultscout lt; lt; "Pulse Intro para continuar ..." lt; lt; endl-cin.ignore (10, `n`) - cin.get () - volver 0-}
El amplio programa de cadena de caracteres es similar a su primo cadena de caracteres de un solo byte a excepción de las siguientes diferencias:
Las variables se declaran wchar_t más bien que carbonizarse.
caracteres constantes y cadenas constantes precedida de una L, como en L “Esta es una gran cadena”.
Los objetos WCIN y wcout se utilizan en lugar de cin y cout para entrada y salida.
Video: Tutorial C++ 21. Espacios de Nombres
los WCS ... funciones aparecen en lugar de la estrecha str ... funciones.
La salida de ConcatenateWide parece idéntica a la de la carbonizarse-basado Concatenar programa para aquellos que lo hacen la mayoría de su entrada / salida en los idiomas europeos. El tema de la escritura de programas capaces de manejar varios idiomas con alfabetos diferentes y las reglas de la gramática se conoce como localización.
Video: C++: Leer cadenas con espacios con función "SCANF"
ANSI C ++ incluye un tipo de cuerda diseñada para que sea más fácil de manipular cadenas de texto.