我正在尝试从文本文件中读取行,然后将每行拆分为单词向量。接下来,我需要从每个向量中获取第一个单词。以下是我的代码
#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
此行导致错误
cout << words.front() << endl;
我需要这样的输出
Read
Break
print
有人请帮忙。
答案 0 :(得分:4)
你确定std::vector<string> words
确实在while循环中被填充了吗?因为如果没有,那么你正试图访问一个空的向量,从而导致崩溃。
在访问front()
之前进行检查,如下所示:
if( !words.empty() )
cout << words.front() << endl;
这将确保仅在向量填充了有意义的内容时才访问front()
。