Queria saber si alguien me puede decir el camino mas corto para extraer cadenas empleando un arreglo de caracteres sin utilizar la clases string, esto es lo que quiero hacer pero con el tipo de dato char
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int opcion;
string fecha;
cout << "INGRESE UNA FECHA EN EL FORMATO DDMMAAAA: ";
getline(cin, fecha);
cout << "ELEGIR FORMATO" << endl;
cout << "1. MM/DD/AAAA" << endl;
cout << "2. DD/MM/AAAA" << endl;
cout << "3. AAAA/MM/DD" << endl;
cin >> opcion;
switch(opcion){
case 1: cout << fecha.substr(2,2) <<"/" << fecha.substr(0,2) << "/" << fecha.substr(4,4) << endl ;break;
case 2: cout << fecha.substr(0,2) <<"/" << fecha.substr(2,2) << "/" << fecha.substr(4,4) << endl ;break;
case 3: cout << fecha.substr(4,4) <<"/" << fecha.substr(2,2) << "/" << fecha.substr(0,2) << endl ;break;
default: cout << "OPCION INCORRECTA" << endl;
}
system("pause");
return 0;
}
Esto es lo que logre, la verdad me dan mas problemas los de tipo char, en cambio con la clase string nunca tuve problemas ;-)
#include <iostream>
#include <string.h>
using namespace std;
const int MAX=8;
typedef char tcad[MAX];
int main()
{
tcad fecha;
char dia[2], mes[2], año[4];
int opcion;
cout << "Ingrese un afecha en formato DD/MM/AAAA: ";
cin.getline(fecha,9,'\n');
dia[0]=fecha[0];
dia[1]=fecha[1];
mes[0]=fecha[2];
mes[1]=fecha[3];
año[0]=fecha[4];
año[1]=fecha[5];
año[2]=fecha[6];
año[3]=fecha[7];
cout << "Seleccione formato" << endl;
cout << "1. MM/DD/AAAA" << endl;
cout << "2. DD/MM/AAAA" << endl;
cout << "3. AAAA/MM/DD" << endl;
cin >> opcion;
switch(opcion){
case 1: cout << mes << "/" << dia << "/" << año << endl; break;
case 2: cout << dia << "/" << mes << "/" << año << endl; break;
case 3: cout << año << "/" << mes << "/" << dia << endl; break;
default: cout << "Opcion incorrecta" << endl;
}
system("pause");
return 0;
}
Desde ya muchas gracias, saludos ;-)
la solucion tradicional sería esta
#include <iostream>
using namespace std;
int main() {
int d, m, y;
char x1, x2;
cout << "Ingrese fecha: ";
cin >> d >> x1 >> m >> x2 >> y;
cout << "Fecha: " << y << "-" << m << "-" << d << endl;
return 0;
}
lo que haces es dejar que cin separe por tipos
así mismo tambien podrías usar <cstdio> y usar scanf y usar su formato de toda la vida
Mmmmm no responde mi duda :silbar:
Quiero hacer lo mas parecido posible a esto pero utilizando cadena de caracteres "char" no string
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int opcion;
string fecha;
cout << "INGRESE UNA FECHA EN EL FORMATO DDMMAAAA: ";
getline(cin, fecha);
cout << "ELEGIR FORMATO" << endl;
cout << "1. MM/DD/AAAA" << endl;
cout << "2. DD/MM/AAAA" << endl;
cout << "3. AAAA/MM/DD" << endl;
cin >> opcion;
switch(opcion){
case 1: cout << fecha.substr(2,2) <<"/" << fecha.substr(0,2) << "/" << fecha.substr(4,4) << endl ;break;
case 2: cout << fecha.substr(0,2) <<"/" << fecha.substr(2,2) << "/" << fecha.substr(4,4) << endl ;break;
case 3: cout << fecha.substr(4,4) <<"/" << fecha.substr(2,2) << "/" << fecha.substr(0,2) << endl ;break;
default: cout << "OPCION INCORRECTA" << endl;
}
system("pause");
return 0;
}
ok XD creo que me desvié...
por cierto las librerías standard no llevan .h eso es la librería de C, la de C++ es <cstring>
creo que buscas es strtok de cstring
http://www.cplusplus.com/reference/cstring/strtok/ (http://www.cplusplus.com/reference/cstring/strtok/)
Ah ciertos es, no es string.h; igual no logro conseguir nada parecido a lo que busco
qué exactamente quieres lograr entonces?
Saber si hay alguna funcion que devuelva subcadena de un arreglo de caracteres similar a subsrt(); de la clase string, no se si me explique bien , de todas maneras pensaba seguir manejandome con la clase string ;-)
no... char es un tipo primitivo y string es una librería de C, C se basa mucho en la eficiencia de memoria y lo que indicas implica copiar la memoria a otro lugar (para extraer un substring), no hay tecnicas de una sola linea
Y que tecnica me recomendaria para extraer los dos primeros caracteres de un tipo char[]="HOLA MUNDO"; ????????? Ya sea copiandola en otra variable de tipo char , ando loco es lo ultimo que me falta ;-)
hmm revisando hay algo que en C no se puede por lo que creo, pero C++ si (por la forma en que funcion cout)
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
int inicio = 0, largo = 2;
char texto[] = "algo"
cout << strndup(texto+inicio, largo) << endl;
return 0;
}
recomiendo cuidado al usarlo, recomiendo leer la documentacion