Las
constantes de cadena, también llamadas cadenas literales o alfanuméricas
("String literals"), son utilizadas para albergar secuencias de
caracteres alfanuméricos, y forman una categoría especial dentro de las constantes,
aunque también pueden ser consideradas un caso especial de matrices de
caracteres. Se representan en el fuente
como una secuencia de caracteres entre comillas dobles (“):
"Esto es una
cadena literal!"
"Esto es una
cadena de caracteres anchos"
Vistas con cierta perspectiva, las
cadenas literales aparecen como un tipo algo extraño, que en cierta forma
desentona del resto de entidades del universo C++ y que no deberían tener
cabida en él. En realidad hay algo de esto; representan una herencia de su antecesor
C, en el que se utilizan estas "extrañas" construcciones para
almacenar texto alfanumérico en el que su punto final se identifica mediante el
carácter nulo.
El texto de una cadena literal
puede contener cualquier carácter del juego de caracteres imprimibles ASCII.
Para representar los caracteres no
imprimibles se utilizan las denominadas secuencias de escape; un truco que
consiste en sustituir cada carácter no imprimible por una secuencia de dos o
tres caracteres. Naturalmente, una cadena literal no debe contener un carácter
nulo en su interior (que como hemos indicado señala el final de la cadena); en
caso contrario, al aplicarse las funciones de Librería Estándar clásicas
(heredadas de C) el resultado es impredecible.
1.1 El punto
importante a entender aquí podría sintetizarse en que, desde la óptica C++, las
cadenas literales:
·
Representan valores (datos) constantes.
·
Para el compilador son en realidad matrices de
caracteres constantes, aunque les permite una sintaxis algo especial en
atención a que el antiguo código C sea compatible con los compiladores C++.
·
Si la cadena no está precedida por la letra L,
es una matriz de caracteres tipo const
char, también denominada cadena estrecha u ordinaria
("Narrow string literal").
·
Si la cadena está precedida por la letra L,
los miembros de la matriz son caracteres anchos del tipo const
w_char, y se denomina cadena ancha ("Wide
string literal").
·
Estos objetos tienen almacenamiento estático
en el sentido indicado en es decir, que el compilador conoce los valores en
tiempo de compilación, y que probablemente sean guardados en el segmento.
Para tal tipo de constantes, estás se encontrarán
formadas por un único carácter que se encontrará encerrado entre un par de
comillas simples. 2Una secuencia de escape se considerada como un
único carácter.
Ejemplos:
‘ ‘ espacio
en blanco
‘x’ letra
minúscula x
‘\ n’ nueva
línea
‘\x1B’ carácter
ASCII Esc
Las constantes carácter son aquellas que constan de un solo carácter el cual se encierra entre comillas simples.
Las constantes de cadena de caracteres constan de cualquier numero de caracteres consecutivos los cuales se encierran entre comillas dobles.
3
Carácter: valla la redundancia son todos
los tipos de signos que se encuentran dentro de la palabra carácter, Los cuales son encerrados entre comillas
simples o apostrofes. Dentro de estas a su vez se encuentran las:
Constantes cadena
Una constante de cadena se escribe
entre comillas ("..."). Estos son ejemplos de una constante de
cadena:
"mi nombre es Jesús"
"no hay clases"
"arlequín
Una constante de carácter es
un solo carácter, encerrado con comillas simples. Una constante de tipo
carácter almacena el valor entero que representa el carácter indicado según el
código de representación utilizado. Esto permite escribir programas en C que no
dependan del código utilizado por la maquina.
Ejemplo: Son constantes de
tipo carácter 'A', 'X', '3' o '/'
Algunos caracteres no pueden
representarse de esa manera, y por eso necesitan utilizar un mecanismo
alternativo. Estos caracteres se representan mediante secuencias de escape:
Códigos especiales de dos
caracteres, el primero de los cuales siempre es la barra invertida:
(\).
Algunas de estas secuencias de escape son:
'\''
representa el carácter comilla simple.
'\\'
representa el carácter barra invertida.
'\"'
representa el carácter comilla doble (aunque también valdría '"').
'\?'
representa el carácter cierre de interrogación (también vale '?').
'\t'
representa el carácter tabulador horizontal.
'\n'
representa el carácter nueva línea.
'\r'
representa el carácter retorno de carro.
No obstante, la utilización
de valores octales o hexadecimales para representar caracteres presupone el
conocimiento del código utilizado, y limita la utilización del programa
realizado a maquinas que utilicen dicho código. Por eso se desaconseja la
utilización de este mecanismo para la especificación de constantes de carácter.
Cadenas de caracteres
Una cadena de caracteres es
una secuencia de cero o mas caracteres encerrados entre
Comillas dobles. Las
comillas dobles no forman parte de la cadena, solo sirven para delimitarla.
Ejemplo: Son constantes de
cadena:
"cadena de
caracteres"
"Fundamentos de la programación \n"
"El carácter barra
invertida es \\"
"Las comillas dobles
hay que escaparlas: \""
La representación interna de
una cadena tiene un carácter nulo ('\0') al final, de modo
Que el almacenamiento físico
es uno más del número de caracteres escritos en la cadena.
Es importante destacar que
no son equivalentes 'D' y "D". En el primer caso estamos
representando el carácter d mayúscula, mientras que en el segundo caso estamos
representando una cadena de caracteres de un solo carácter (el carácter d
mayúscula).
Un carácter tiene un valor entero equivalente,
mientras que una cadena de un solo carácter no tiene un valor entero
equivalente y de hecho consta de dos caracteres, que son el carácter
especificado y el carácter nulo ('\0').