C ++ vector :: front not working

时间:2018-03-07 07:14:31

标签: c++ vector file-handling

我正在尝试从文本文件中读取行,然后将每行拆分为单词向量。接下来,我需要从每个向量中获取第一个单词。以下是我的代码

#include<bits/stdc++.h>
using namespace std;

int main (){
    ifstream inputFile("input.txt");
    vector<string> words;
    string line, piece;

    while( getline(inputFile, line) ){

        istringstream lineStream(line);

        while( getline(lineStream, piece, ' ') ){
            words.push_back(piece);
        }

        // this does not work
        cout << words.front() << endl;

        /*
        // this works fine
        for(unsigned int i=0; i<words.size(); i++){
            cout << words[i] << endl ;
        }
        */

        words.clear();
    }
    return 0;
}

这就是文本文件包含的内容

Read the lines from a file
Break each line into words
print the 1st word from each of those lines

这给了我以下错误 enter image description here

此行导致错误

cout << words.front() << endl;

我需要这样的输出

Read
Break
print

有人请帮忙。

1 个答案:

答案 0 :(得分:4)

你确定std::vector<string> words确实在while循环中被填充了吗?因为如果没有,那么你正试图访问一个空的向量,从而导致崩溃。

在访问front()之前进行检查,如下所示:

if( !words.empty() )
    cout << words.front() << endl;

这将确保仅在向量填充了有意义的内容时才访问front()