如何获得字符串中的单词数
How to get the number of words in a string
我下周有一项c++入门课的作业要交,我需要一些关于如何去做的建议。我必须编写一个单词计数程序,它给出用户列表输入中的行数、单词数、字符数、唯一行数和唯一单词数。到目前为止,我得到的是:
如果可能的话,我会在std::istringstream
中放入一行,并从那里读取单词并计数。要计算唯一的单词/行,几乎可以肯定最简单的方法是将它们插入std::set
,然后在完成后计算集合中的项目数量(这看起来几乎是您已经尝试过的,所以这几乎只是确认该方法是完全可行的)。
如果您需要在没有stringstream的情况下分隔单词,(通常)最简单的方法是找到一个非空格字符,然后将字符复制到字符串中,直到再次遇到空格字符为止。重复,直到到达输入的末尾。
最简单的可能是设置一个计数器(words
)和一个标志(in_word
),从0和false
开始。一次读一个字。根据in_word
以及当前字符是否为单词字符,更改状态并可能增加单词数(本质上是计数单词开头)。
这听起来很乱,但是取一行(这行就行;-),看看应该怎么写
我不打算为你写所有的代码,但这里是算法:
<标题> 行使用getline
以换行符作为分隔符循环遍历字符串的行。对于每一行(如果不是空的?),增加行数。
对于每一行,使用getline
和空格分隔符循环遍历单词。对于每一行,如果不为空,则增加单词数。
std::string.size()
不包括空格
unsigned int numCharacters;
for (std::string::size_type i = 0; i < str.size(); i++)
if (str[i] != ' ') numCharacters++;
<标题>独特的线/单词以与计算行数/单词相同的方式循环,但将每一行添加到std::vector
—std::vector.push_back()
—如果它还没有包含该行。
相关文章:
- 给定一个单词数组和一个字符串,如何计算给定字符串中的所有单词
- 输出返回编号。等于输入字符串的单词的字符串数
- 将 2 个单词与字符串分隔开
- 将字节数组 (uint8_t) 转换为单词数组 (uint16_t),反之亦然
- 包含换行符分隔的单词的文件和C++中这些单词的字符串向量的大小是否相同?
- 如何输入每个单词在字符串数组中的句子,直到用户按Enter键
- 提取第二个单词.解析字符串(C )
- 分类包含数字和单词的字符串向量
- C 输入多个单词要字符串
- 用输入中给出的单词填充字符串
- 忽略包含特殊单词的字符串(月)
- 如何读取特定单词的字符串并计算发现的时间
- C++一次打印一个单词的字符串,计算字符数和字符数
- 为什么我的 forloop 在我的 lexical_words 函数中没有将字符串数组('keyWords")中的单词与字符串迭代器中的单词进行比较?
- 应用于单词数组的随机数范围
- 使用指针按单词反转字符串
- 分析单词的字符串
- 取一个包含任意数量单词的字符串,并将这些单词存储在不同的字符串变量中
- 拆分一个二进制数字符串,并将其存储在c++中的int类型数组中
- 从文件中读取行数、单词数、字符数