gpt4 book ai didi

c++ - 在 C++ 中存储带有标点符号的句子

转载 作者:太空宇宙 更新时间:2023-11-04 11:58:13 24 4
gpt4 key购买 nike

这是我第一次来这里,我是 C++ 的初学者。我想知道如何在阅读文本文件时用标点符号拆分句子。

hey how are you? The Java is great. Awesome C++ is awesome!

结果在我的 vector 中是这样的(假设我已经用 endl 显示 vector 的每个内容):

  • 嘿,你好吗?
  • Java 很棒。
  • Awesome C++ 真棒!

到目前为止,这是我的代码:

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,所以实际上是省略了问号。看来你需要找到其他方法来解决这个问题。如果我是你,我会阅读整行并逐字符解析。就我而言,没有内置的字符串函数可以按分隔符拆分单词。

关于c++ - 在 C++ 中存储带有标点符号的句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15190258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com