Hola,
el tipo string no permite usar la aritmética de punteros como en el tipo char, pero sí tratarlo como una tabla de caracteres, por lo que si tienes en mismo string ambos nombres (Andrés y Felipe) podrás imprimir cualquiera de los dos cuando lo necesites sabiendo en qué posición empieza cada nombre y qué longitud tiene. De hecho, hasta podrías (si no lo necesitas), ahorrarte el espacio intermedio.
Código C++:
Ver original#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
#define TAM 4
int main()
{
string a = "Hola";
char b[] = "Hola";
int i;
for(i=0; i<TAM ;i++)
{
/* Uso aritmética de punteros en el tipo char */
printf("a[%d]: %c b[%d]: %c\n", i
, a
[i
], i
, *(b
+i
)); }
return 0;
}
Este código muestra, carácter a carácter, el contenido de a y b. También obtendrías el mismo resultado con el printf siguiente
Código C++:
Ver original/* Tratar ambos tipos como tablas de caracteres */
printf("a[%d]: %c b[%d]: %c\n", i
, a
[i
], i
, b
[i
]);
Sin embargo, si usas aritmética de punteros en el tipo string
Código C++:
Ver original/* Uso aritmética de punteros en el tipo string */
printf("a[%d]: %c b[%d]: %c\n", i
, *(a
+i
), i
, b
[i
]);
no debería dejarte compilar y te dirá que hay un error. O al menos a mí no me deja.
Un saludo,
gonzo