Dev - C++ - Necesito saber si hay una mejor forma de introducir cadenas de caracteres en C++ por favor

 
Vista:

Necesito saber si hay una mejor forma de introducir cadenas de caracteres en C++ por favor

Publicado por Jesús (16 intervenciones) el 11/08/2020 03:40:35
La manera en que introduzco una cadena de caracteres es la siguiente:
Declaro un char nombre[cantidad de caracteres que debe tener + 1]
Al momento de introducirlo lo hago con un cin.getline(nombre de la cadena, cantidad de caracteres, '\n')
Pero al momento de validarlo es un problemón.

Si quiero validar que el usuario no introduzca más caracteres de los establecidos, con ayuda de un strlen y un while hago que tenga que introducir 7 caracteres, todo bien si introduce menos de 7, si funciona la validación, pero si introduce más de 7 caracteres se salta todas las siguientes instrucciones y no funciona la validación.

Así que si alguien sabe de una mejor forma de introducir cadenas de caracteres y validarlas sin tantos problemas, por favor enseñeme.

Adjunto mi programa, después de introducir el codigovideojuego es donde está la validación de que les mencionaba. Gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream>
#include<conio.h>
#include<string.h>
 
using namespace std;
 
 
 
 
void main() {
 
	struct
	{
		char nombrevideojuego[100];
		char codigovideojuego[8];
		char clasificacion[5];
		char precio[9];
		char rentaoventa[6];
	} videojuegos[500];
 
	int opcionmenu, i=0;
	int contadorcodigo = 0, longitudcodigo = 0;
 
	cout << "Tienda de videojuegos" << endl << endl;
	cout << "Ingrese 1 para agregar un videojuego" << endl;
	cout << "Ingrese 2 para ver todos los videojuegos dados de alta" << endl;
	cout << "Ingrese 3 para salir" << endl;
	cin >> opcionmenu;
	cin.ignore();
	system("CLS");
 
	switch (opcionmenu) {
 
	case 1:
 
		cout << "Introduzca el codigo del videojuego" << endl;
		cin.getline(videojuegos[i].codigovideojuego, 8, '\n');
		//INICIA VALIDACION DEL CODIGO DEL VIDEOJUEGO
 
		longitudcodigo = strlen(videojuegos[i].codigovideojuego);
 
		while (longitudcodigo != 7) {
 
			system("CLS");
			cout << "El codigo debe tener 7 digitos, usted introdujo " << longitudcodigo << " digitos" << endl;
			cin.getline(videojuegos[i].codigovideojuego, 8, '\n');
			longitudcodigo=strlen(videojuegos[i].codigovideojuego);
		}
 
 
		//TERMINA VALIDACION DEL CODIGO DEL VIDEOJUEGO
		cout << endl << endl;
 
		cout << "Introduzca el nombre del videojuego" << endl;
		cin.getline(videojuegos[i].nombrevideojuego, 100, '\n');
 
		cout << endl << endl;
 
		cout << "Introduzca la clasificacion" << endl;
		cout << "E: Todos, E+10: Todos +10, T: Adolescentes, M: Maduro +17, Ao: Adultos unicamente +18, RP: Aun sin clasificar" << endl;
		cin.getline(videojuegos[i].clasificacion, 5, '\n');
 
		cout << endl << endl;
 
		cout << "Introduzca el precio" << endl;
		cin.getline(videojuegos[i].precio, 9, '\n');
 
		cout << endl << endl;
 
		cout << "Introduzca si es venta o renta" << endl;
		cin.getline(videojuegos[i].rentaoventa, 6, '\n');
 
 
		system("CLS");
 
		cout << "Videojuego agregado correctamente" << endl << endl;
		cout << "Codigo del videojuego: " << videojuegos[i].codigovideojuego << endl;
		cout << "Videojuego: " << videojuegos[i].nombrevideojuego << endl;
		cout << "Clasificacion: " << videojuegos[i].clasificacion << endl;
		cout << "Precio: " << videojuegos[i].precio << endl;
		cout << "Es: " << videojuegos[i].rentaoventa << endl << endl << endl;
		break;
 
	case 3:
		exit(0);
		break;
 
	default: cout << "No existe esa opcion" << endl;
 
	}
	system("PAUSE>null");
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.440
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Necesito saber si hay una mejor forma de introducir cadenas de caracteres en C++ por favor

Publicado por dario (720 intervenciones) el 11/08/2020 05:09:20
Hola, porque no usas los metodos y funciones propias de C++, en tu codigo estas mezclando C y C++, por ejemplo en C++ ya existe un tipo de dato string (no uses char).
Busca en google metodo Length y otros para manejo de caracteres.
Salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Necesito saber si hay una mejor forma de introducir cadenas de caracteres en C++ por favor

Publicado por Jesus (16 intervenciones) el 11/08/2020 06:15:37
Gracias compañero, ya no sufro de esos errores y pude usar el string. Ya pude validar el codigovideojuego correctamente, ahora tengo problema con validar el nombrevideojuego :(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
OSZAR »