Quispe Fernandez, JAMES
tema bibliotecas :
18.- <ctime>
19.- <ctype.h>
20.- <cwchar>
ctime () en C++
La función ctime () en C ++ convierte la hora dada desde la época a una hora local del calendario y luego a una representación de caracteres.
Una llamada a ctime(time)es una combinación de las funciones asctime () y localtime () , como asctime(localtime(time)).
Se define en el archivo de cabecera <ctime> .
ctime () prototipo
char * ctime (const time_t * time_ptr);
La función ctime () toma un puntero a time_tobjeto como su parámetro y devuelve una representación de texto de la forma:
Www Mmm dd hh: mm: ss yyyy
ctime () representación en tiempo
Tipo
Descripción
Valores
Www
Día de la semana de 3 letras
De lunes a sol
Mmm
Nombre del mes de 3 letras
Enero a diciembre
dd
Día del mes de 2 dígitos
00 a 31
S.S
Hora de 2 dígitos
00 a 23
mm
Minuto de 2 dígitos
00 a 59
ss
2 dígitos segundo
00 a 59
aaaa
Año de 4 dígitos
Año de 4 dígitos
Parámetros de ctime ()
-
time_ptr: puntero a un objeto time_t para convertir.
ctime () Valor de retorno
-
El puntero a una cadena terminada en nulo apunta a la representación de caracteres de la fecha y la hora.
Ejemplo: ¿Cómo funciona la función ctime ()?
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
time_t curr_time;
curr_time = time(NULL);
char *tm = ctime(&curr_time);
cout << "Today is : " << tm;
return 0;
}
}
​
TRABAJO EN EL C++
#include <iostream>
#include <ctime>
#include <vector>
using namespace std;
int main(int argc, char *argv[])
{
/*
struct tm {
int tm_sec; // seconds of minutes from 0 to 61
int tm_min; // minutes of hour from 0 to 59
int tm_hour; // hours of day from 0 to 24
int tm_mday; // day of month from 1 to 31
int tm_mon; // month of year from 0 to 11
int tm_year; // year since 1900
int tm_wday; // days since sunday
int tm_yday; // days since January 1st
int tm_isdst; // hours of daylight savings time
}
*/
/* fecha/hora actual basado en el sistema actual */
time_t now = time(0);
/* Objeto de una estructura tm con fecha/hora local */
tm * time = localtime(&now);
vector<string> dia_semana;
dia_semana.push_back("Domingo");
dia_semana.push_back("Lunes");
dia_semana.push_back("Martes");
dia_semana.push_back("Miercoles");
dia_semana.push_back("Jueves");
dia_semana.push_back("Viernes");
dia_semana.push_back("Sabado");
vector<string> mes;
mes.push_back("Enero");
mes.push_back("Febrero");
mes.push_back("Marzo");
mes.push_back("Abril");
mes.push_back("Mayo");
mes.push_back("Junio");
mes.push_back("Julio");
mes.push_back("Agosto");
mes.push_back("Septiembre");
mes.push_back("Octubre");
mes.push_back("Noviembre");
mes.push_back("Diciembre");
int year = 1900 + time->tm_year;
//Formato=hoy miercoles, 27 de mayo del 2015
cout << "Hoy " << dia_semana[time->tm_wday] << ", ";
cout << time->tm_mday << " de " << mes[time->tm_mon] << " del " << year << endl;
cout << time->tm_hour << ":" << time->tm_min << ":" << time->tm_sec << endl;
system("PAUSE");
return 0;
}

TIEMPO ACTUAL EN EL QUE SE HIZO ESTE TRABAJO
<cctype> (ctype.h) en C++
​
Funciones de manejo de personajes.
Este encabezado declara un conjunto de funciones para clasificar y transformar caracteres individuales.
Funciones
Estas funciones toman el int equivalente de un carácter como parámetro y devuelven un int que puede ser otro carácter o un valor que representa un valor booleano: un valor int de 0 significa falso, y un valor int diferente de 0representa verdadero.
Hay dos conjuntos de funciones:
Funciones de clasificación de caracteres
Verifican si el carácter pasado como parámetro pertenece a una determinada categoría:
Compruebe si el carácter es alfanumérico (función)
Compruebe si el carácter es alfabético (función)
Compruebe si el carácter está en blanco (función)
Compruebe si el carácter es un carácter de control (función)
Compruebe si el carácter es dígito decimal (función)
Compruebe si el personaje tiene representación gráfica (función)
Compruebe si el carácter es minúscula (función)
Compruebe si el carácter es imprimible (función)
Compruebe si el carácter es un carácter de puntuación (función)
Compruebe si el carácter es un espacio en blanco (función)
Compruebe si el carácter es una letra mayúscula (función)
Compruebe si el carácter es un dígito hexadecimal (función)
Funciones de conversión de caracteres
Dos funciones que convierten entre mayúsculas y minúsculas:
Convertir letras mayúsculas a minúsculas (función)
Convertir letras minúsculas a mayúsculas (función)
Para el primer conjunto, aquí hay un mapa de cómo cada función considera el conjunto ASCII de 127 caracteres original (una x indica que la función devuelve verdadero en ese carácter)
Valores ASCII
caracteres
0x00 .. 0x08
NUL, (otros códigos de control)
X
0x09
pestaña ( '\ t' )
X
X
X
0x0A .. 0x0D
(códigos de control de espacios en blanco: '\ f' , '\ v', '\ n' , '\ r' )
X
X
0x0E .. 0x1F
(otros códigos de control)
​
Los caracteres en el conjunto de caracteres extendido (por encima de 0x7F) pueden pertenecer a diversas categorías según la configuración regional y la plataforma. Como regla general, ispunct , isgraph y isprint devuelven verdadero en estos para la configuración regional C estándar en la mayoría de las plataformas que admiten conjuntos de caracteres extendidos.
​
TRABAJO EN EL C++
​
#include <iostream>
#include <ctype.h>
using namespace std;
int main()
{
string word;
cout<<"Enter the word: ";
cin>>word;
int cont = 0;
for(int i=0 ; i<word.length(); i++)
{
if(isupper(word[i])) // Si quiero ver las minusculas es con islower(word[i])
{
cont++;
}
}
cout<<"\nThe word has: "<<cont<<"capital letters"<<endl;
cin.get();cin.get();
return 0;
}

<cwchar> en c++
​
Es una clase muy poderosa para manejar y manipular cadenas de caracteres. Sin embargo, como las cadenas son, de hecho, secuencias de caracteres, podemos representarlas también como matrices simples de elementos de un tipo de carácter.
Por ejemplo, la siguiente matriz:
char foo [20];
Es una matriz que puede almacenar hasta 20 elementos de tipo char. Puede representarse como:
Por lo tanto, esta matriz tiene una capacidad para almacenar secuencias de hasta 20 caracteres. Pero esta capacidad no necesita estar completamente agotada: la matriz también puede acomodar secuencias más cortas. Por ejemplo, en algún punto de un programa, la secuencia "Hello"o la secuencia "Merry Christmas"se pueden almacenar foo, ya que ambas cabrían en una secuencia con una capacidad de 20 caracteres.
Por convención, el final de las cadenas representadas en secuencias de caracteres se señala con un carácter especial: el carácter nulo , cuyo valor literal se puede escribir como '\0'(barra diagonal inversa, cero).
En este caso, la matriz de 20 elementos de tipo charllamadofoose puede representar almacenando las secuencias de caracteres "Hello"y "Merry Christmas"como:
Observe cómo después del contenido de la cadena, '\0'se agregó un carácter nulo ( ) para indicar el final de la secuencia. Los paneles en color gris representan charelementos con valores indeterminados.
Inicialización de secuencias de caracteres terminadas en nulo
Como las matrices de caracteres son matrices ordinarias, siguen las mismas reglas que éstas. Por ejemplo, para inicializar una matriz de caracteres con una secuencia predeterminada de caracteres, podemos hacerlo como cualquier otra matriz:
char myword[] = { 'H', 'e', 'l', 'l', 'o', '\0' };
Lo anterior declara una matriz de 6 elementos de tipo charinicializados con los caracteres que forman la palabra "Hello"más un carácter nulo '\0' al final.
Pero las matrices de elementos de caracteres tienen otra forma de inicializarse: usar literales de cadena directamente.
En las expresiones utilizadas en algunos ejemplos de capítulos anteriores, los literales de cadena ya se han mostrado varias veces. Estos se especifican encerrando el texto entre comillas dobles ( "). Por ejemplo:
"the result is: "
Este es un literal de cadena , probablemente usado en algún ejemplo anterior.
Las secuencias de caracteres encerradas entre comillas dobles ( ") son constantes literales . Y su tipo es, de hecho, una matriz de caracteres terminada en nulo. Esto significa que los literales de cadena siempre tienen un carácter nulo ( '\0') automáticamente anexado al final.
Por lo tanto, la matriz de elementos char llamados mywordpuede inicializarse con una secuencia de caracteres terminada en nulo por cualquiera de estas dos declaraciones:
1
2
char myword[] = { 'H', 'e', 'l', 'l', 'o', '\0' };
char myword[] = "Hello";
En ambos casos, la matriz de caracteres mywordse declara con un tamaño de 6 elementos de tipo char: los 5 caracteres que componen la palabra "Hello", más un carácter nulo final ( '\0'), que especifica el final de la secuencia y que, en el segundo caso, cuando se usan comillas dobles ( ") se anexa automáticamente.
Tenga en cuenta que aquí estamos hablando sobre la inicialización de una matriz de caracteres en el momento en que se declara, y no sobre la asignación de valores a ellos más adelante (una vez que ya se han declarado). De hecho, dado que los literales de cadena son matrices regulares, tienen las mismas restricciones que éstas y no se les pueden asignar valores.
Expresiones (una vez que myword ya se ha declarado como arriba), tales como:
1
2
myword = "Bye";
myword[] = "Bye";
que no sea válido, como tampoco sería la siguiente:
myword = { 'B', 'y', 'e', '\0' };
Esto se debe a que los arreglos no pueden tener valores asignados. Tenga en cuenta, sin embargo, que a cada uno de sus elementos se le puede asignar un valor individualmente. Por ejemplo, esto sería correcto:
1
2
3
4
myword[0] = 'B';
myword[1] = 'y';
myword[2] = 'e';
myword[3] = '\0';
Cadenas y secuencias de caracteres terminadas en nulo
Las matrices simples con secuencias de caracteres terminadas en nulo son los tipos típicos utilizados en el lenguaje C para representar cadenas (por eso también se les conoce como cadenas C ). En C ++, aunque la biblioteca estándar define un tipo específico para cadenas (clase string), aún así, los arreglos simples con secuencias de caracteres terminadas en nulo (cadenas en C) son una forma natural de representar cadenas en el lenguaje; de hecho, los literales de cadena siguen produciendo secuencias de caracteres terminadas en nulo y no stringobjetos.
En la biblioteca estándar, ambas representaciones para cadenas (cadenas en C y cadenas de biblioteca) coexisten, y la mayoría de las funciones que requieren cadenas están sobrecargadas para admitir ambas.
Por ejemplo, cinycoutadmite secuencias terminadas en nulo directamente, lo que permite extraerlas directamente cino insertarlas cout, al igual que las cadenas. Por ejemplo:
¿
// strings and NTCS:
#include <iostream>
#include <string>
using namespace std;
int main ()
{
char question1[] = "What is your name? ";
string question2 = "Where do you live? ";
char answer1 [80];
string answer2;
cout << question1;
cin >> answer1;
cout << question2;
cin >> answer2;
cout << "Hello, " << answer1;
cout << " from " << answer2 << "!\n";
return 0;
}
¿Cuál es su nombre? Homero
¿Dónde vives? Grecia
Hola, Homero de Grecia!
En este ejemplo, se utilizan ambas matrices de caracteres que utilizan secuencias y cadenas terminadas en nulo. Son bastante intercambiables en su uso junto con ciny cout, pero hay una diferencia notable en sus declaraciones: las matrices tienen un tamaño fijo que debe especificarse implícita o explícitamente cuando se declara; question1tiene un tamaño de exactamente 20 caracteres (incluidos los caracteres nulos de terminación) y answer1tiene un tamaño de 80 caracteres; mientras que las cadenas son simplemente cadenas, no se especifica el tamaño. Esto se debe al hecho de que las cadenas tienen un tamaño dinámico determinado durante el tiempo de ejecución, mientras que el tamaño de las matrices se determina en la compilación, antes de que se ejecute el programa.
En cualquier caso, las secuencias de caracteres terminadas en nulo y las cadenas se transforman fácilmente entre sí:
Las secuencias de caracteres terminadas en nulo se pueden transformar en cadenas implícitamente, y las cadenas se pueden transformar en secuencias de caracteres terminadas en nulo mediante el uso de cualquiera de stringlas funciones miembro c_stro data:
char myntcs[] = "some text";
string mystring = myntcs; // convert c-string to string
cout << mystring; // printed as a library string
cout << mystring.c_str(); // printed as a c-string
(nota: ambos c_stry datamiembros stringson equivalentes)
TRABAJO EN EL C++
​
#include <iostream>
using namespace std;
int main()
{
//Tipo de datos char
char hola[5] = "hola"; //char añade al final del array un carácter nulo \0
cout << hola << "\n";
cout << "En la posicion 0 se encuentra el caracter ... " << hola[0] << "\n";
//Caracteres sin longitud definida
char *cadena = "Cualquier longitud ++";
cout << cadena << "\n";
char *variable1="Hola ", *variable2="Mundo\n";
cout << variable1 << variable2;
//Cambiando el valor de las variables
variable1 = "Programando con ";
variable2 = "C++\n";
cout << variable1 << variable2;
//Entrada de datos
char introducealgo[256];
cout << "Introduce algo: ";
cin.getline(introducealgo, sizeof(introducealgo));
​ cout << "Has introducido lo siguiente ..." << introducealgo << "\n";
cout<<"\n\n\n\n\nIIIEE-2"<<endl<<endl;
system("PAUSE");
return 0;
}
