Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/08/2014, 11:55
Hernan1333
 
Fecha de Ingreso: agosto-2014
Ubicación: Albardon San Juan Argentina
Mensajes: 2
Antigüedad: 9 años, 9 meses
Puntos: 0
Duda con este codigo en C++

Hola amigos del foro! he escrito el siguiente codigo en C++:

# include <iostream>
# include <fstream>
# include <map>

using namespace std;

void inserta_idioma(map<string, string>& idioma, string linea){
int inicio = linea.find('!'), mitad = linea.find('-');
string idioma1 = linea.substr(inicio, mitad);
string nombre_oficial = linea.substr(mitad + 1);

idioma[idioma1] = nombre_oficial;
}

void inserta_iso(map<string, string>& iso, string linea) {
int pos = linea.find(','), fin = linea.find('!');
string c_iso = linea.substr(0, pos);
string nombre = linea.substr(pos + 1, fin);

iso[nombre] = c_iso;
}

void abre_fichero(map<string, string>& iso, map<string, string>& idioma, string nombre_fichero){
ifstream f(nombre_fichero.c_str());
string linea;

getline(f, linea);
while(!f.eof()){
inserta_iso(iso, linea);
inserta_idioma(idioma, linea);
getline(f, linea);
}
}

int main() {
map<string, string> iso;
map<string, string> idioma;
string n, pais, nombre_fichero = "iso3166.csv";
abre_fichero(iso, idioma, nombre_fichero);

cout << "Que quieres que muestre? ";
cin >> n;
if (n == "codigo iso") {
cout << "De que pais? ";
cin >> pais;
cout << "El código iso de " << pais << " es " << iso[pais] << endl;
}

if (n == "idioma oficial"){
cout << "De que pais?";
cin >> pais;
map<string, string>::iterator it = idioma.begin();
cout << "El idioma oficial de " << pais << " es " << (*it).first << endl;
}

if (n == "nombre oficial") {
cout << "De que país?";
cin >> pais;
cout << "El nombre oficial de " << pais << " es " << idioma[pais] << endl;
}
}

Al compilar no me da ningún error, pero cuando lo voy a ejecutarlo me da el siguiente error:

terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::substr
Abortado

Alguien sabe que puede pasar y como arreglarlo? Desde ya muchas gracias!