gpt4 book ai didi

C++ 词汇表;在 vector/ map 中找到完整的描述

转载 作者:可可西里 更新时间:2023-11-01 10:45:36 26 4
gpt4 key购买 nike

如果你创建一个单词表,我正在编写代码。它包含一个“单词”和一个“描述”。单词和描述有自己的 vector 。我也在尝试使用 map 进行同样的尝试。

在我尝试查找单词之前,该程序运行良好。该程序只会从描述中提取最后一个词。有没有办法把整个句子变成一个 vector ?

这是我如何写下描述的代码。整个程序代码很长所以我只提重要的东西:

cout<< "Describe your word:"; //Describtion by using vectors
cin>> desc; //Here you enter the decribtion
getline(cin, desc); //So you can have "space" and write a whole sentence.
d.push_back(desc); //Place the describe at the back of the list so it is at the same index as the matching word

这是应该显示单词和描述的代码:

cout<< "Enter a word to lookup:";
cin>> word;
if (find(o.begin(), o.end(), word) !=o.end()) //Lookup if word excist in vector
{
int pos = find(o.begin(), o.end(), word) - o.begin(); //Searches which index the word is in the vector
cout<< "Describtion for " << word << " is " << d[pos] << endl; //d[pos] takes the description vector that is in the same index as the word vector
}
else
cout<< "Word not found! Try something else." << endl; //If word not found

它只会从描述中提取最后一个词。我通过使用 map 遇到了同样的问题:

cout<< "Enter a word to lookup:"; 
cin>> word;
if (L.find(word) != L.end()) //Lookup if the key excist
{
cout<< "Describtion for " << word << " is " << L[word] << endl; //Tells what the description is for the word if it excist
}
else
cout<< "Word not found! Try something else." << endl; //Tells you this if key is not found

那么,我怎样才能打印出特定单词的整个描述呢?

编辑:我注意到它只是缺少描述中的第一个单词(我很愚蠢,不会尝试使用超过 2 个单词)

那么,有什么问题吗?如何在输出的描述中获取第一个单词?

最佳答案

如果您从 std::cin 中提取单个 std::string,它只会得到一个单词。首先,您获取描述的第一个词并将其放入 desc:

cin >> desc;         // Here you enter the decribtion

然后您将获取描述中剩余的单词并将它们放入desc。覆盖desc(第一个字)之前的内容:

getline(cin, desc); // So you can have "space" and write a whole sentence.

所以,现在 desc 包含描述的第一个单词以外的所有内容。考虑使用调试器来查找此类内容。

其他一些建议:避免搜索 vector 两次。将 find 的结果存储在一个变量中:

auto search = find(o.begin(), o.end(), word);
if (search != o.end()) {
int pos = std::distance(o.begin(), search);
// Use pos ...
}

关于C++ 词汇表;在 vector/ map 中找到完整的描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27424378/

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