2011-03-01 20 views
6

Cuando trato de ejecutar este programa me sale un error que detiene el programa y dice, "vector subíndice fuera de rango"vector subíndice error fuera de, C++

Alguna idea de lo que estoy haciendo mal?

#include <vector> 
#include <string> 
#include <iostream> 
#include <iomanip> 
#include <fstream> 
#include <sstream> 
using namespace std; 

//(int argc, char* argv[] 
int main() 
{ 
    fstream bookread("test.txt"); 
    vector<string> words; 

    bookread.open("test.txt"); 
    if(bookread.is_open()){ 
     cout << "opening textfile"; 
     while(bookread.good()){ 
      string input; 
      //getline(bookread, input); 
      bookread>>input; 
      //string cleanedWord=preprocess(input);   
      //char first=cleanedWord[0]; 
      //if(first<=*/ 
      //cout << "getting words"; 
      //getWords(words, input); 
     } 
    } 
    cout << "all done"; 

    words[0]; 

getchar(); 
} 
+0

http://stackoverflow.com/q/43108052/7276612[No parece funcionar todo el tiempo. ¿Dónde me estoy equivocando?] [1] – DamienArt1234

Respuesta

7

Nunca inserte nada en las palabras vector, por lo que la línea de words[0]; es ilegal, ya que accede al primer elemento de la misma, que no existe.

+0

Agregué words.push_back (entrada) en el ciclo while, y sigo recibiendo el error – charli

+0

Verifique con un depurador conectado si esta línea es realmente alcanzada por el programa. No lo creo. –

+0

Dice que el error es la línea 779? Pero el programa claramente no es tan largo – charli

2

No veo dónde está empujando algo al vector. Si el vector está vacío, el subíndice 0 estaría fuera de rango.

0

Parece que su programa nunca se redondea para agregar nada al vector, generalmente se hace con push_back(), por lo que en tiempo de ejecución words[0] produce su error subscript out of range.

Debe verificar el tamaño del vector antes de acceder a él.

Prueba esto:

for(vector<string>::const_iterator it=words.begin(), end=words.end(); it!=end; ++it){ 
    cout << *it << ' '; 
} 
0

¿Puede usted por favor adjunte la versión del código en el que realmente push_back cuerdas en el vector. No es posible depurar el problema a menos que el código en el que se reproduce esté disponible para su revisión.