无论如何都要找出一个单词在文本中重复的次数。
文本在字符数组(char [])
中text =这是一本书,还有这本书 是关于书。
word = book
result = 3
答案 0 :(得分:1)
因为这显然是家庭作业而且没有标记,所以我会给你一个解决方案,你显然无法作为你的作业提交,因为你的老师会知道你是在互联网上得到的。< / p>
没有诸如忽略标点符号等要求,因此我允许自己编写一个版本,该版本仅适用于明确分隔的单词,因此在示例文本字符串中插入空格。
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
// Count clearly separated occurrences of `word` in `text`.
std::size_t count ( const std::string& text, const std::string& word )
{
std::istringstream input(text);
return (std::count(std::istream_iterator<std::string>(input),
std::istream_iterator<std::string>(), word));
}
int main ( int, char ** )
{
const char text[] = "this is a book , and this book is about book .";
const char word[] = "book";
std::cout << count(text, word) << std::endl;
}
输出:
3
答案 1 :(得分:0)
您可能希望使用std::string
实现此目的,here是您开始使用的示例。
答案 2 :(得分:0)
最简单的方法是遍历字符串,计算找到您要查找的单词的次数。我确信您可以使用<algorithm>
中的函数轻松地完成它,但是如果您不得不问是否可以在C ++中执行此操作,我认为您不够先进以尝试使用算法库,无论如何自己动手都会更有教学意义。
我建议使用std::string
但是如果你被允许的话(因为这个问题听起来像家庭作业,可能带来额外的限制)。使用std::string
比char数组更容易且更不容易出错。尽管如此,它可以完成。
答案 3 :(得分:0)
有可能。
你有一个字符数组。尝试在一张纸上进行搜索,逐个字符:
第一个字符是T.这不是b,所以它不能是“book”的第一个字符 第二个字符是h,所以再一次,它不是b ...
[...]
下一个角色是b ...噢,这可能是它。下一个角色是o吗?是!!!接下来另一个o ??? ...等等。
当你可以这样做时,你将能够使用C ++来完成它。
请记住,您可以使用[]
运算符访问数组中的第n个字符:
char c = array[5] ; // c is the 6th character in the array
现在,转向C ++的方式首先是使用std :: string而不是chars数组,并使用strings方法。谷歌的std::string methods
,我想你应该找到一些你可以使用的...
所以你应该设法编写一些代码来迭代每个字符直到结束
我想这应该足够了。
你的家庭作业(因为这里的每个人都知道这是一个家庭作业问题)更多的是寻找解决方案而不是找到它:这不是死记硬背的学习。
我怀疑Stack Overflow上的任何人都记得这个经典问题的解决方案。但我想大多数人都知道如何找到一个解决方案。 你需要学习“如何找到”心态,所以请让你的编译器再试一次......
P.S。:当然,如果你对C ++知之甚少或者什么都不知道,那么你就搞砸了,你可以从Googling some C++ Tutorials
开始。