Векторная ошибка вне диапазона, C ++ - PullRequest
6 голосов
/ 02 марта 2011

Когда я пытаюсь запустить эту программу, я получаю сообщение об ошибке, которое останавливает программу и говорит: «Векторный индекс вне диапазона»

Есть идеи, что я делаю не так?

#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();
}

Ответы [ 4 ]

8 голосов
/ 02 марта 2011

Вы никогда не вставляете ничего в слова vector, поэтому строка words[0]; недопустима, поскольку она обращается к первому элементу, который не существует.

2 голосов
/ 02 марта 2011

Я не вижу, куда вы толкаете что-либо на вектор. Если вектор пуст, индекс 0 будет вне диапазона.

0 голосов
/ 02 марта 2011

Не могли бы вы прикрепить версию кода, где вы на самом деле push_back-строки на вектор. Устранить проблему невозможно, если только код для воспроизведения не доступен для просмотра.

0 голосов
/ 02 марта 2011

Кажется, что ваша программа никогда не прибегает к добавлению чего-либо в вектор, обычно это делается с помощью push_back(), поэтому во время выполнения words[0] выдает ошибку subscript out of range.

Вы должны проверитьразмер вектора перед доступом к нему.

Попробуйте это:

for(vector<string>::const_iterator it=words.begin(), end=words.end(); it!=end; ++it){
  cout << *it << ' ';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...