Amplias funciones de caracteres y bibliotecas en C++

Wide char es similar al tipo de datos char, excepto que wide char ocupa el doble de espacio y, como resultado, puede tomar valores mucho más grandes. char puede tomar 256 valores que corresponden a entradas en la tabla ASCII. Por otro lado, wide char puede tomar valores 65536 que corresponden a valores UNICODE, que es un estándar internacional reciente que permite la codificación de caracteres para prácticamente todos los idiomas y símbolos de uso común.

  1. Al igual que el tipo de constantes de carácter es char, el tipo de carácter ancho es wchar_t.
  2. Este tipo de datos ocupa 2 o 4 bytes dependiendo del compilador que se utilice.
  3. Principalmente, el tipo de datos wchar_t se usa cuando se usan idiomas internacionales como el japonés.

A continuación se muestra una implementación simple de C++ para mostrar cómo se usa wchar_t: 

CPP

// An example C++ program to demonstrate use of wchar_t
#include <iostream>
using namespace std;
 
int main()
{
    wchar_t w  = L'A';
    cout << "Wide character value:: " << w << endl ;
    cout << "Size of the wide char is:: " << sizeof(w);
    return 0;
}

Producción:

Wide character value:: 65
Size of the wide char is:: 4
  • L es el prefijo para los literales de caracteres anchos y los literales de string de caracteres anchos que le indican al compilador que el carácter o string es del tipo de carácter ancho.
  • w tiene el prefijo en operaciones como escanear (wcin) o imprimir (wcout) mientras se opera el tipo de caracteres anchos.

String o array de tipo de caracteres anchos: al igual que la string de array de tipo de caracteres, también puede haber una string de array de tipo de caracteres anchos. A continuación se muestra la implementación de C++ para mostrar una string de array de tipo de caracteres anchos: 

CPP

// An example C++ program to demonstrate use
// of wchar_t in array
#include <iostream>
using namespace std;
 
int main()
{
    // char type array string
    char caname[] = "geeksforgeeks" ;
    cout << caname << endl ;
 
    // wide-char type array string
    wchar_t waname[] = L"geeksforgeeks" ;
    wcout << waname << endl;
 
    return 0;
}

Producción:

geeksforgeeks
geeksforgeeks

El resultado es el mismo, pero la única diferencia es que la amplia array de caracteres utiliza el doble de memoria para codificar cada carácter. Funciones para strings de array de caracteres anchos: la mayoría de las funciones para strings de array de caracteres anchos se definen en el archivo de encabezado cwchar. wcslen() : sintaxis: size_t wcslen (const wchar_t* wcs); Devuelve la longitud de la string ancha. Este es el equivalente de caracteres anchos de strlen. A continuación se muestra una implementación simple de C++ para mostrar cómo obtener la longitud de una string de array de caracteres amplia. 

CPP

// An example C++ program to demonstrate use
// of wcslen()
#include <iostream>
#include<cwchar>
using namespace std;
 
int main()
{
    // wide-char type array string
    wchar_t waname[] = L"geeksforgeeks" ;
 
    wcout << L"The length of '" << waname
          << L"' is " << wcslen(waname) << endl;
 
    return 0;
}

Producción:

The length of 'geeksforgeeks' is 13

wcscpy() : sintaxis: wchar_t *wcscpy(wchar_t *strDestino, const wchar_t *strSource); wcscpy() significa Copia de string de caracteres anchos. Copia una string de caracteres anchos apuntada por strSource en la array de caracteres anchos apuntada por strDestination. Este es el equivalente de caracteres anchos de strcpy. A continuación se muestra una implementación simple de C++ para mostrar el uso de wcscpy: 

CPP

// An example C++ program to demonstrate use
// of wcscpy()
#include <iostream>
#include<cwchar>
using namespace std;
 
int main()
{
    wchar_t waname[] = L"geeksforgeeks" ;
    wchar_t wacopy[14];
    wcscpy(wacopy, waname);
    wcout << L"Original = " << waname
          << L"\nCopy =  " << wacopy << endl;
 
    return 0;
}

Producción:

Original = geeksforgeeks
Copy =  geeksforgeeks

wcscat() : sintaxis: wchar_t *wcscat(wchar_t *strDestino, const wchar_t *strSource); wcscat() significa Concatenación de strings de caracteres anchos. Agrega una copia de la string ancha strSource a la string ancha strDestination. Este es el equivalente de caracteres anchos de strcat. A continuación se muestra una implementación simple de C++ para mostrar el uso de wcscat: 

CPP

// An example C++ program to demonstrate use
// of wcscat()
#include <iostream>
#include<cwchar>
using namespace std;
 
int main()
{
    wchar_t string1[] = L"geeksforgeeks" ;
    wchar_t string2[] = L" is for Geeks" ;
 
    wcscat(string1, string2);
 
    wcout << L"Concatenated wide string is = "
          << string1 << endl;
 
    return 0;
}

Producción:

Concatenated wide string is = geeksforgeeks is for Geeks

wcscmp() : sintaxis: int wcscmp(const wchar_t* wcs1, const wchar_t* wcs2); wcscmp() significa Comparación de strings de caracteres anchos. Devuelve 0 si wcs1 y wcs2 son iguales, devuelve un valor mayor que cero si el primer carácter ancho que no coincide tiene un valor mayor en wcs1 que en wcs2. Y devuelve un valor menor que cero si el primer carácter ancho que no coincide tiene un valor menor en wcs1 que en wcs2. Este es el equivalente de caracteres anchos de strcmp. A continuación se muestra una implementación simple de C++ para mostrar el uso de wcscmp: 

CPP

// An example C++ program to demonstrate use
// of wcscmp()
#include <iostream>
#include<cwchar>
using namespace std;
 
int main()
{
    wchar_t string1[] = L"geeksforgeeks" ;
    wchar_t string2[] = L"GEEKS" ;
    wcout << L"Comparison1 = "
          << wcscmp(string1, string2) << endl;
    wcout << L"Comparison2 = "
          << wcscmp(string1, string1) << endl;
    wcout << L"Comparison3 = "
          << wcscmp(string2, string1) << endl;
    return 0;
}

Producción:

Comparison1 = 1
Comparison2 = 0
Comparison3 = -1

wcstok() : sintaxis: wchar_t* wcstok( wchar_t* str, const wchar_t* delim, wchar_t ** ptr); wcstok() significa tokenización de string de caracteres anchos. Encuentra el siguiente token en una string ancha terminada en nulo apuntada por str. Los caracteres separadores se identifican mediante una string ancha terminada en nulo señalada por delim. str: puntero a la string ancha terminada en nulo para tokenizar. delim: puntero a la string ancha terminada en nulo que identifica los delimitadores. ptr: puntero a un objeto de tipo wchar_t*, que wcstok utiliza para almacenar su estado interno. Este es el equivalente de caracteres anchos de strtok(). A continuación se muestra una implementación simple de C++ para mostrar el uso de wcstok: 

CPP

// An example C++ program to demonstrate use
// of wcstok()
#include <iostream>
#include<cwchar>
using namespace std;
 
int main()
{
    wchar_t string[] = L"geeksforgeeks,is,for,GEEKS" ;
 
    wchar_t* internal_state;
 
    wchar_t delim[] = L"," ;
    wchar_t* token  = wcstok(string, delim, &internal_state);
 
    while (token)
    {
        wcout << token << endl;
        token = wcstok(NULL, delim, &internal_state);
    }
 
    return 0;
}

Producción:

geeksforgeeks
is
for
GEEKS

wcsncpy() : sintaxis: wchar_t* wcsncpy(wchar_t* destino, const wchar_t* origen, size_t n); Copia los primeros n caracteres anchos del origen al destino. Si se encuentra el final de la string ancha de origen antes de que se hayan copiado n caracteres, el destino se rellena con caracteres anchos nulos adicionales hasta un total de n caracteres. Este es el equivalente de caracteres anchos de strncpy(). A continuación se muestra una implementación simple de C++ para mostrar el uso de wcsncpy: 

CPP

// An example C++ program to demonstrate use
// of wcsncpy()
#include <iostream>
#include<cwchar>
using namespace std;
 
int main()
{
    wchar_t string1[] = L"Geeks For Geeks";
    wchar_t string2[20];
    wchar_t string3[20];
 
    wcsncpy(string2, string1, 20);
 
    // partial copy
    wcsncpy(string3, string2, 5);
 
    string3[5] = L'\0';   // null character manually added
 
    wcout << string1 << endl << string2
          << endl << string3 ;
 
    return 0;
}

Producción:

Geeks For Geeks
Geeks For Geeks
Geeks

wcsstr() : sintaxis: const wchar_t* wcsstr (const wchar_t* wcs1, const wchar_t* wcs2); Devuelve un puntero a la primera aparición de wcs2 en wcs1. Devuelve un puntero nulo si wcs2 no forma parte de wcs1. Aquí, wcs1 es la string de caracteres anchos que se escaneará y wcs2 contiene la secuencia que debe coincidir. Este es el equivalente de caracteres anchos de strstr(). A continuación se muestra una implementación simple de C++ para mostrar el uso de wcsstr: 

CPP

// An example C++ program to demonstrate use
// of wcsstr()
#include <iostream>
#include<cwchar>
using namespace std;
 
int main()
{
    wchar_t string1[] = L"Geeks Are Geeks";
    wchar_t* string2 = wcsstr(string1, L"Are");
    wcsncpy(string2, L"For", 3);
    wcout << string1 << endl;
    return 0;
}

Producción:

Geeks For Geeks

Referencia: http://www.cplusplus.com/reference/cwchar/ Este artículo es una contribución de MAZHAR IMAM KHAN . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *