C ++ Wordlist; 在vector/地图中find一个完整的描述

我正在创build一个代码,你创build一个单词表。 它包含一个“单词”和一个“描述”。 这个词和描述有自己的载体。 我也尝试使用地图也一样。

该程序进行得很顺利,直到我试图查找单词。 程序只会从描述中拿出最后一个字。 有没有办法把一个完整的句子作为一个单独的向量?

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

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 

这只是说明中的最后一个字。 我使用地图也遇到了同样的问题:

 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 

那么,我怎样才能得到整个描述打印出来的特定字?

编辑:我注意到,这只是描述中的第一个字是缺less的(我很愚蠢,不能尝试比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包含desc的第一个单词。 考虑使用调试器来找到这样的事情。

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

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