Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema arreglos dinamicos de strings

Estas en el tema de Problema arreglos dinamicos de strings en el foro de C/C++ en Foros del Web. Hola..!! Estoy intentando crear un arreglo de strings (de la clase string) que el usuario me pida el numero nombres y luego los vaya metiendo ...
  #1 (permalink)  
Antiguo 03/05/2009, 07:00
 
Fecha de Ingreso: octubre-2008
Mensajes: 50
Antigüedad: 15 años, 6 meses
Puntos: 2
Exclamación Problema arreglos dinamicos de strings

Hola..!!
Estoy intentando crear un arreglo de strings (de la clase string) que el usuario me pida el numero nombres y luego los vaya metiendo pero me da violacion de segmento

Código:
#include <iostream>
#include <string>

using namespace std;

int main(void)
{
	string * szArr;
	int num;

	cout << "ingrese un numero : ";
	cin >> num;
	
	szArr = new string[num];

	for(int i = 0; i < num; i++)
	{
		cout << "Ingrese un nombre: ";
		getline(cin, *szArr++);
		cout << szArr[i] << endl;
	}

	szArr-num;

	for(int i = 0; i < num; i++)
		cout << *szArr++ << endl;

}
no se que es lo que pasa que me dice violacion de segmento despues que meto el segundo nombre..
  #2 (permalink)  
Antiguo 03/05/2009, 08:58
Avatar de MeduZaPaT  
Fecha de Ingreso: enero-2009
Ubicación: USA
Mensajes: 106
Antigüedad: 15 años, 3 meses
Puntos: 3
Respuesta: Problema arreglos dinamicos de strings

y si cambias esto getline(cin, *szArr++); por esto getline(cin, szArr[i]);?
  #3 (permalink)  
Antiguo 03/05/2009, 09:52
 
Fecha de Ingreso: octubre-2008
Mensajes: 50
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Problema arreglos dinamicos de strings

pues igual sigue teniendo muchos fallos cuando corro el programa e ingreso un numero por ejemplo 8 solo me deja meter tres nombres y el output es rarisimo
  #4 (permalink)  
Antiguo 03/05/2009, 16:16
 
Fecha de Ingreso: marzo-2009
Mensajes: 30
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Problema arreglos dinamicos de strings

A ver...... en ves de getline( cin, *szArr++) prueva dentro del ciclo for siempre......
cin.getline( szArr[ i ], sizemax, '\n').....donde sizemax es el numero maximo de caracteres a recibir y el tercero es el delimitador, que no es necesario ponerlo pq es predeterminado....cuando getline lee una cadena te la alamancena el szArr[ i ] y lee el delimitador('\n')........pero no lo pone en el arreglo y t lo borra del flujo de entrada(stdin) asi puedes seguir leyendo la otra line( nombre en tu caso) que escribas....con eso deberia funcionar!! suerte
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:03.