1

我有一个家庭作业问题,需要一个程序来计算用户输入中特定单词的实例数。它只需要计算空格之间的单词。我在想我们需要使用一个向量,并在每次出现“单词”实例时添加它。然后在最后,使用 v.size() 来告诉向量的大小。这是我到目前为止所拥有的,但它不会编译,我很确定它不正确:

#include <iostream> 
#include <string>
#include <vector>
using namespace std;

int main()
{
  string word;
  vector<string> v;
  while (cin >> word)
  {
    if (v == "word")
    {
      v.push_back (word);
    }
  }
  cout << v.size();
  return 0;
}
4

3 回答 3

3
  1. if(v == "word")- 您正在尝试将您的向量v与“单词”字符串进行比较。输入存储在一个word变量中。如果您要计算的单词是“单词”,那么它应该是if(word == "word").

  2. 你不需要push_back你的话——你很清楚它们都是一样的,对吧?而是制作一个计数器变量并在每次遇到所需单词时递增它。

这些想法应该让你开始。

于 2013-09-17T23:21:05.987 回答
1

v == “单词”对我来说没有意义。v 是一个向量,对吗?如果是这样,则 v == "word" 正在将字符串向量与字符串进行比较,这是行不通的。

我个人建议使用地图或字典。这是有关 c++ 映射的文档。惊人的数据结构 0.0

http://en.cppreference.com/w/cpp/container/map

我在大学时做类似练习的方式是这样的:

//Pseudocode activate
Map<string, int> my_map = new Map();
String word;
while(there is input){
    my_map.at(word)++;
}

for all entries in my_map{
    print my_map keys: my_map values
}
于 2013-09-17T23:25:09.973 回答
0

如果您只需要计算“单词”的数量,您可以使用以下内容:

int count = -1;
do
{
cout << "Word: ";
cin >> word;
count++;
system("cls");
}while(condition)
printf("Result:%d", cout);

以及获得条件数的计数 == true

于 2013-09-17T23:45:10.597 回答