C ++ Wordlist;在矢量/地图中找到一个孔描述

时间:2014-12-11 13:46:59

标签: c++ windows vector map

我正在创建一个代码,你创建了一个单词列表。它包含一个单词'和“描述”#39;单词和描述有自己的向量。我也尝试使用地图。

程序进展顺利,直到我尝试查找单词。该程序只会从描述中取出最后一个字。有没有办法把整个句子写成一个向量?

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

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

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

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

那么,出了什么问题?如何在输出中显示描述中的frist字?

1 个答案:

答案 0 :(得分:0)

如果您从std::string中提取单个std::cin,则只能获得一个字。首先,您将获得描述的第一个单词并将其放入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 ...
}