gpt4 book ai didi

C++ 如何将单词组合限制为 2 到 3 个单词?

转载 作者:行者123 更新时间:2023-11-30 05:27:29 25 4
gpt4 key购买 nike

我目前正在尝试制作一个可以从文本文件中读取短语的函数,该短语包括组合 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 "


当然,这并不是完全您想要的,一次最多只打印三个单词,并在打印前三个单词后从下一个单词开始。您可能还需要另一个 循环来处理一到三的计数。不过,以上只是一个起点,我建议您试验一下,以及外部循环之外的其他循环、中间循环以及作为新内部循环的循环。实验和失败是您学习的方式。

关于C++ 如何将单词组合限制为 2 到 3 个单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37298620/

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