2011-03-01 26 views
6

Programa durdurur ve yanlışVektör simge, C++

konusunda fikrin ne yapıyorum "aralık dışında vektör simge" diyor bir hata alıyorum? Satır words[0]; yasadışı yüzden mevcut değil onun ilk elemanını, erişir, çünkü

#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[Devam her zaman çalışmıyor gibi görünüyor. Nerede yanlış gidiyorum?] [1] – DamienArt1234

cevap

7

Sen, kelimelerin vector içine bir şey eklemek asla.

+0

while döngüsünde words.push_back (input) ekledim ve hala hata alıyorum – charli

+0

Bu programa gerçekten ulaşılırsa bir hata ayıklayıcı eklenmiş olarak kontrol edin. Ben öyle düşünmüyorum. –

+0

Hata 779 numaralı hat mı diyor? Ancak program açıkça bu kadar uzun değil – charli

2

Vektörün üzerine herhangi bir şeyi nereye ittiğini göremiyorum. Vektör boşsa, alt simge 0 aralık dışı olur.

0

Programınız, push_back() ile yapılan ve genellikle words[0] hata adresinden subscript out of range hata üretir, vektöre hiçbir şey eklemez.

Erişmeden önce vektörün boyutunu kontrol etmelisiniz.

bu deneyin: aslında vektör üzerinde dizeleri push_back nerede

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

kod versiyonunu ekleyin Can. Yeniden inceleme için kullanılabilecek kod olmadığı sürece sorunu ayıklamak mümkün değildir.