这是我第一次来这里,我是C ++的初学者。我想知道在从文本文件中读取时如何用标点符号分割句子。
即
hey how are you? The Java is great. Awesome C++ is awesome!
结果将在我的向量中(假设我已经将endl显示为向量的每个内容):
到目前为止,这是我的代码:
vector<string> sentenceStorer(string documentOfSentences)
{
ifstream ifs(documentOfSentences.c_str());
string word;
vector<string> sentence;
while ( ifs >> word )
{
char point = word[word.length()-1];
if (point == '.' || point == '?' || point == '!')
{
sentence.push_back(word);
}
}
return sentence;
}
void displayVector (vector<string>& displayV)
{
for(vector<string>::const_iterator i = displayV.begin(); i != displayV.end(); ++i )
{
cout << *i <<endl;
}
}
int main()
{
vector <string> readstop = sentenceStorer("input.txt");
displayVector(readstop);
return 0;
}
这是我的结果:
你能解释一下为什么我无法得到上一个字并修复它吗?
答案 0 :(得分:1)
我会告诉你一个线索。在while语句中,or子句中有三个条件。因此,如果其中任何一个满足而不是while
语句,则不检查其他语句。所以它需要你的第一个并寻找。 (点)。然后在找到它之后,将其读入word
,所以实际上它省略了问号。
看起来你需要找到解决这个问题的其他方法。如果我是你,我会阅读整行并用char解析它。就我而言,没有内置字符串函数可以通过分隔符来分割单词。