2011-03-01 26 views
6

जब मैं इस कार्यक्रम चलाने का प्रयास करने पर मुझे त्रुटि है कि कार्यक्रम रुकती है और कहता है, "सीमा से बाहर वेक्टर सबस्क्रिप्ट"वेक्टर सीमा त्रुटि से बाहर सबस्क्रिप्ट, सी ++

किसी भी विचार क्या मैं गलत कर रहा हूँ मिल सकता है?

#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[ हर समय काम नहीं कर रहा है। मैं गलत कहां जा रहा हूं?] [1] – DamienArt1234

उत्तर

7

आप शब्दों vector में कुछ भी डालने कभी नहीं, इसलिए लाइन words[0]; अवैध है, क्योंकि यह के पहले तत्व है, जो मौजूद नहीं है तक पहुँचता है।

+0

मैंने थोड़ी देर में शब्द.push_back (इनपुट) जोड़ा, और मुझे अभी भी त्रुटि मिलती है – charli

+0

यह लाइन वास्तव में प्रोग्राम द्वारा पहुंचने पर संलग्न डीबगर से जांचें। मुझे ऐसा नहीं लगता। –

+0

यह कहता है कि त्रुटि 779 है? लेकिन कार्यक्रम स्पष्ट रूप से नहीं है कि लंबे – charli

2

मुझे नहीं पता कि आप वेक्टर पर कुछ भी कहां दबा रहे हैं। यदि वेक्टर खाली है, तो सबस्क्रिप्ट 0 सीमा से बाहर होगा।

0

ऐसा लगता है कि आपका प्रोग्राम वेक्टर में कुछ भी जोड़ने के लिए कभी भी गोल नहीं होता है, आमतौर पर push_back() के साथ किया जाता है, इसलिए रन-टाइम words[0] आपकी subscript out of range त्रुटि उत्पन्न करता है।

आपको इसे एक्सेस करने से पहले वेक्टर के आकार की जांच करनी चाहिए।

इस प्रयास करें:

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

आप कोड के संस्करण संलग्न करें सकते हैं जहां आप वास्तव में वेक्टर पर तार push_back। इस मुद्दे को डीबग करना संभव नहीं है जब तक कि कोड पर पुन: उत्पन्न करने के लिए कोड उपलब्ध न हो।

संबंधित मुद्दे