Soy nuevo en esto de c++ y mi martirio ha sido la lectura de ficheros, pero en esa busqueda he encontrado una manera de leer los archivos de texto mucho mas sencilla. Supongamos que tienes un archivo de texto con el siguiente formato.
colum11 colum12
colum21 colum22
colum31 colum32
colum41 colum42
Si ejecutas el siguiente codigo podras acceder a cada columna.
char x,y;
string filename("archivo.txt");
ifstream input_file(filename);
while(input_file >> x >> y)
{
cout << x << ' ' << y << endl;
}
Con el codigo anterior el item de la columna 1 de la primera fila se guardara en la variable x y la columna dos se guardara en la columna y. El codigo te deberia dar una salida similar a la siguiente.
colum11 colum12
colum21 colum22
colum31 colum32
colum41 colum42
Con lo que ahora puedes trabajar cada elemento como quieras.
std::ifstream archivoProcesos("Procesos.txt");
NodoProceso* Cola;
std::string linea;
std::string nombreProceso;
int tiempoCPU;
for(std::string proceso; std::getline(archivoProcesos, linea); ){
std::istringstream datosProceso(linea);
for(int columna = 0; std::getline(datosProceso, proceso, ' '); columna++){
switch(columna){
case 0:
nombreProceso = proceso;
break;
case 1:
tiempoCPU = std::stoi(proceso);
break;
}
}
Cola->encolar(nombreProceso, tiempoCPU);
}
Puede ser que el error este en el for, ya que estoy viendo que en la segunda llamada de este
for(int columna = 0; std::getline(datosProceso, proceso, ' '); columna++){
Creo estas encerrando en la variable proceso el contenido del getline, intenta crear una variable tipo string a parte y ponla ahi en vez de usar proceso. OJO repito que no conozco mucho de c++ Solo estoy dando una idea segun los problemas que me han dado a mi codigos anteriores. Segundo punto, seguro de que la funcion getline debe usarse en ese caso?? Me refiero a cuando la usas por segunda vez con la variable proceso.