C++如何将单词组合限制为2到3个单词
C++ How can I restrict the combinations of words to make a phrase to 2 to 3 words?
我目前正在尝试制作一个函数,该函数可以从文本文件中读取一个短语,该短语由2到3个相邻单词组成。目前,我的函数会这样做,但它最终会连接起来形成整篇文章,而不是每个短语只有2到3个单词。
这是我当前的代码:
int Dictionary::processFilePhrases(string file) {
vector<string> wordList;
string word;
string phrase;
ifstream fin;
fin.open(file.c_str());
while (fin >> word) {
wordList.push_back(word);
}
fin.close();
for (int i=0; i<wordList.size(); i++){
phrase += wordList[i] + " ";
cout << phrase << endl;
}
return wordCount;
}
例如:
输入文件文本:"游戏人工智能的下一个前沿"
目标是输出类似的单词:
下一个
下一个前沿
下一个
下一个前沿
的下一个前沿
边界
的边界
游戏边界
等等。
好吧,"串联"循环在你得到的所有单词上运行一次,所以这就是你得到所有单词的原因。
描述所需输出的方式,似乎需要两个循环,嵌套在彼此内部,其中内部循环从1到n,其中n是外部循环的当前值。
也许类似
for (unsigned i = 0; i < wordList.size(); ++i)
{
std::string phrase;
for (unsigned j = 0; j <= i; ++j)
{
phrase += wordList[j];
phrase += ' '; // Spacing between words
}
std::cout << phrase << 'n';
}
如果我们现在遍历上面的代码,在外循环的第一次迭代中,i
等于零。在内部循环中,当j
小于或等于i
(现在为零)时,我们循环,这意味着内部循环将只迭代一次,使phrase
等于字符串"The "
(使用您在问题中给出的输入)。
一旦内循环完成,短语就被打印出来,外循环迭代,这使得i
等于1。内部循环现在迭代两次(对于j
为零和一)来构建短语"The next "
。
当然,这并不是完全可以随心所欲,一次最多只打印三个单词,并在打印完前三个单词后从下一个单词开始。您可能还需要另一个循环来处理一对三计数。不过,以上是一个起点,我建议您尝试一下,以及外部、中间和作为新内部循环的其他循环。实验和失败是你学习的方式。
类似的东西(我没有运行它):
int Dictionary::processFilePhrases(string file) {
vector<string> wordList;
string word;
ifstream fin;
fin.open(file.c_str());
while (fin >> word) {
wordList.push_back(word);
}
fin.close();
for (int i=0; i<wordList.size(); i++){
string phrase;
for (int j = i; j < i + 3 && j < wordList.size(); ++j) {
phrase += wordList[j] + " ";
cout << phrase << endl;
}
cout << phrase << endl;
}
return wordCount;
}
相关文章:
- 我们如何在文本文件中找到C++中的几个单词?
- 如何阅读两个单词,然后阅读C++中的一行?
- 是否可以在文本文件中找到最长单词的长度,并在同一个文本文件中读取,只需 1 个 while 循环?
- 如何使用运算符>>在自定义字符串中输入多个单词?
- 在文本中查找半个单词"ABBA"的问题
- 如何从列表中找到以"b"开头的单词和带有 4 个符号的单词?
- 用c++交换短语中单词的前两个字母
- C++ 如何检查哪些单词不在 2 个类似文件中
- 将 2 个单词与字符串分隔开
- 在C++中使用哪个函数来输入多个单词,比如C中的fgets
- 我需要C++读取字符串数组中每个单词的第一个字母
- 如何将无符号的 int 值解释为四个字母的单词?
- 如何让变量随机输出四个单词之一
- 如何获取句子中单词的第一个字母*没有*指针,引用等
- 如何将行的第一个单词作为一个变量,将行的其余部分作为另一个变量进行归档/存储
- 当字符串中只有一个"GOOD"字符串可用时,从没有空格的字符串中提取第一个单词的最佳和有效方法?
- CPP - strlen 不会输出多个单词的整个长度 [仅限 C 字符串]
- QT 创建器只会将第一个单词从文本编辑转换为纯文本
- 从文件的一行中查找数字的平均值,避免使用第一个单词
- 在文件中查找 10 个最长的单词