Я впервые здесь, и я новичок в 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;
}
Вот мой результат:
Можете ли вы объяснить, почему я не мог получить предыдущее слово и исправить это?
Я дам вам подсказку. В операторе while есть три условия в предложении or. Так что если любой из них выполняется, чем while
Заявление не проверять другие. Таким образом, он берет ваш первый и ищет. (Точка). Затем, найдя его, читает его в word
так что на самом деле он опускает знак вопроса.
Похоже, вам нужно найти другой способ решить эту проблему. Если бы я был тобой, я бы прочитал всю строку и проанализировал ее символ за символом. Насколько я понимаю, нет встроенной строковой функции, которая разделяет слова по разделителю.
Других решений пока нет …