计算字符串中的单词数

2023-12-08

我正在自学C++。我编写了这个程序来计算字符串中的单词数。我知道这不是最好的方法,但这是我能想到的。

我正在使用空格来计算单词数。问题就在这里。

countWords("");   // ok, 'x.empty()' identifies it as an empty string.
countWords("  "); // 'x.empty()' fails, function returns 1.

p.s 我希望这个程序不计算“!”、“?”等符号。作为言语。这是我的代码:

#include <iostream>
#include <string>

int countWords(std::string x);

int main() {
    std::cout << countWords("Hello world!");
}

int countWords(std::string x) {
    if(x.empty()) return 0; // if the string is empty
    int Num = 1;              

    for(unsigned int i = 0; i < x.size(); i++) {
        // if there is a space in the start
        if(x[0] == ' ') continue;

        // second condition makes sure that i don't count 2 spaces as 2 words
        else if(x[i] == ' ' && x[i - 1] != ' ') Num++;
    }
    return Num;
}

你的功能可以简化为:

int countWords(std::string x) {

    int Num = 0;      
    char prev = ' ';

    for(unsigned int i = 0; i < x.size(); i++) {

        if(x[i] != ' ' && prev == ' ') Num++;

        prev = x[i];
    }
    return Num;
}

这里有一个demo

编辑:跟进评论:

这是替换其他字符的简单方法' ',认为可能有一个构建方法:

void replace(std::string &s, char replacer, std::set<char> &replacies)
{
    for (int i=0; i < s.size(); i++)
        if (replacies.count(s[i])) s[i] = replacer;

}

demo

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算字符串中的单词数 的相关文章

  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 如何将 ascii 值列表转换为 python 中的字符串?

    我在 Python 程序中有一个列表 其中包含一系列数字 这些数字本身就是 ASCII 值 如何将其转换为可以在屏幕上回显的 常规 字符串 您可能正在寻找 chr gt gt gt L 104 101 108 108 111 44 32 1
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • 确定一组日期的事件重复模式

    我正在寻找一种模式 算法或库 它将采用一组日期并在退出时返回重复的描述 即集合 11 01 2010 11 08 2010 11 15 2010 11 22 2010 11 29 2010 会产生类似 十一月的每个星期一 的结果 有没有人以
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 使用 C# 读取 Soap 消息

  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler
  • 当我使用 OpenSSL1.1.0g 根据固定的 p 和 g 值创建 Diffie Hellman 密钥协议密钥时,应该执行哪些检查?

    您好 我尝试通过这段代码使用修复 p 和 g 参数来制作 Diffie Hellman Keysanswer https stackoverflow com a 54538811 4706711 include

随机推荐

  • System.IO.FileSystemWatcher 的底层是如何工作的?

    我想了解 System IO FileSystemWatcher 在幕后是如何工作的 因为我有一个要求 我需要查看 100 个或更多文件夹下的所有文件 其中每个文件夹将包含大约 1K 个文件 我不确定我是否使用 FileSystemwatc
  • HiveUDF + saxon 9.1.0.8 + Java8 = 未能创建 XPathFactory

    我的 Spark 作业使用 HiveContext 和 Saxon 工作正常 除非代码中没有定义 UDF 在 UDF 实现的情况下 HiveContext 初始化失败并出现错误 我听说 saxon 9 5 1 5 中解决了 saxon ja
  • 解析器组合器:如何终止关键字重复

    我试图弄清楚如何使用关键字终止单词的重复 一个例子 class CAQueryLanguage extends JavaTokenParsers def expression START words END x gt println exp
  • CDI 扩展 - 在 ProcessAnnotatedType 阶段添加拦截器

    我正在尝试以编程方式添加拦截器 该拦截器称为 LogginInterceptor 仅记录其运行的方法的名称 当在方法上使用注释 Interceptors LogginInterceptor class 时 一切正常 然而 我正在尝试创建 C
  • 在运行时动态选择一个类

    我试图提出一个解决方案 在运行时根据消息类型选择处理 消息 的类 我知道我可以使用这样的东西 if msg type A MsgAProcessor execute message else if msg type B MsgBProces
  • IntelliJ IDEA 2016.3.4:构建过程异常终止

    我在 Intellij IDEA 中构建新的 java 项目时遇到错误 错误 构建过程异常终止 C Program Files Java jdk1 8 0 121 bin java Xmx700m Djava awt headless tr
  • 如何在 .NET SslStream 中为客户端身份验证指定接受的证书

    我正在尝试使用 Net System Security SslStream 类来处理具有客户端身份验证的 SSL TLS 流的服务器端 为了执行握手 我使用以下代码 SslStream sslStream new SslStream inn
  • 如何在 bash 中格式化数字,可能使用 printf ?

    这个如此简单的脚本失败了 bin bash n 1 printf v fn 05d n echo fn with 3 printf Illegal option v 为什么 Ubuntu 14 04 根据 Joe 这似乎是重复的以 scri
  • 为什么自定义函数引用一直指向旧函数

    我在 javascript设计模式 中找到了这个示例 并与以下代码的行为混淆 此代码创建一个自定义函数 var scareMe function alert Boo scareMe function alert Double boo 现在我
  • 使用
  • 而不包含
  • Closed 这个问题需要多问focused 目前不接受答案 插入有什么危险 li li 进入页面而不将项目包含在 ul 堵塞 例如 div style border solid 1px red li Item li li Another
  • 使用 Jenkins 执行 NUnit

    早上好 我想配置 Jenkins 服务器以使用插件运行 NUnitJenkins NUnit 插件但我尝试了很多东西但不起作用 我单击按钮 添加构建步骤 gt gt 执行Windows批处理命令但我在这里看到了http stackoverf
  • 我可以向现有静态类添加扩展方法吗?

    我很喜欢 C 中的扩展方法 但在向静态类添加扩展方法方面还没有取得任何成功 例如Console 例如 如果我想添加一个扩展Console 称为 WriteBlueLine 这样我就可以去 Console WriteBlueLine This
  • 在多行插入中使用 LAST_INSERT_ID()

    是否可以在插入查询中使用 LAST INSERT ID INSERT INTO mytable col1 col2 VALUES val1 null val2 LAST INSERT ID 尝试上面的 LAST INSERT ID 返回 0
  • 在表格边框上获取 Flutter DataTable 边框半径时出现问题

    我有一个DataTable我想添加一个边框半径 阅读完此内容后 我添加了DataTable to a Container小部件 当我不向标题添加背景颜色时 它效果很好 执行此操作时 整个表格的颜色都会改变 Container decorat
  • Python:通过套接字发送的消息大小

    我正在尝试使用发送消息socket图书馆 由于消息的大小是可变的 因此我决定在字符串的开头附加消息的大小 然后发送它 例如 如果消息是 Hello World 这是 13 个字符长 我已经计算过 EOL 我会发送类似的内容 sizeof13
  • 如何区分线条的各个部分?

    我有两个文件想要比较 这些行有时间戳 可能还有一些我想在匹配算法中忽略的其他内容 但如果匹配算法发现文本的其余部分存在差异 我仍然希望输出这些项目 例如 1c1 lt junit4 2013 01 11 04 43 57 392 INFO
  • 如何从字符串中删除最后一个字符

    这可能是一个简单的任务 但我是 PHP 新手 我正在创建一串从数据库获取的值以用于特定目的 如何从字符串中删除最后一个字符 str foreach dataarray as value str value 它给了我类似的字符串ABC DEF
  • Jaas - 请求可更新的 Kerberos 票证

    我有一个 Java API 它与 Kerberos 服务器通信并执行各种操作 截至目前 我的 API 向 Kerberos 服务器请求不可更新的票证 据我了解 jaas 配置文件有一个选项可以将 renewTGT 选项设置为 true 以便
  • OpenCV (C++) - 设置像素的 HSV 值

    我有一个 RGB 图像 已转换为 HSV 我的目标是将每个不满足特定色调值 100 的像素设置为黑色 所以 H S V 0 我有这个代码 frame3是HSV Mat图像 色调 100 for int i 0 i
  • 计算字符串中的单词数

    我正在自学C 我编写了这个程序来计算字符串中的单词数 我知道这不是最好的方法 但这是我能想到的 我正在使用空格来计算单词数 问题就在这里 countWords ok x empty identifies it as an empty str