如何从 C++ 字符串中删除所有非字母数字字符?

2023-11-29

我正在编写一个软件,它要求我使用 libcurl 处理从网页获取的数据。当我获取数据时,由于某种原因,其中有额外的换行符。我需要找到一种只允许字母、数字和空格的方法。并删除其他所有内容,包括换行符。有什么简单的方法可以做到这一点吗?谢谢。


编写一个函数,它接受一个char并返回true如果你想删除该字符或false如果你想保留它:

bool my_predicate(char c);

然后使用std::remove_if从字符串中删除不需要的字符的算法:

std::string s = "my data";
s.erase(std::remove_if(s.begin(), s.end(), my_predicate), s.end());

根据您的要求,您也许可以使用标准库谓词之一,例如std::isalnum,而不是编写自己的谓词(您说您需要匹配字母数字字符和空格,所以也许这并不完全符合您的需要)。

如果你想使用标准库std::isalnum函数,您将需要进行强制转换来消除之间的歧义std::isalnumC 标准库头文件中的函数<cctype>(这是您想要使用的)和std::isalnum在 C++ 标准库头文件中<locale>(这不是您想要使用的,除非您想要执行特定于区域设置的字符串处理):

s.erase(std::remove_if(s.begin(), s.end(), (int(*)(int))std::isalnum), s.end());

这对于任何序列容器(包括std::string, std::vector and std::deque)。该习惯用法通常称为“擦除/删除”习惯用法。这std::remove_if算法也适用于普通数组。这std::remove_if仅对序列进行一次传递,因此具有线性时间复杂度。

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

如何从 C++ 字符串中删除所有非字母数字字符? 的相关文章

随机推荐

  • 如何找到两个矩形之间距离最近的两点?

    我正在尝试找到能够找到代表两个矩形之间最近距离的两个点的算法 点赞积分C and J形成下图中的最小距离 我试图不在这里重新发明轮子并使用已经经过战斗测试的东西 例如增强 几何 距离 但它只返回距离 而不返回点数 不要让事情变得过于通用 通
  • 使用 out 参数的优点和缺点是什么

    任何人都可以指出 out 参数的优缺点 当首选使用 out 参数而不仅仅是返回值时 输出参数有效地允许您从方法返回多个值 这通常比返回包含多个值的任意结构或元组更可取 有人可能会说 使用 out 参数的函数更容易忽视可能的副作用 因为它偏离
  • S3 签名 URL 在参数通过之前就过期了

    我正在尝试为 S3 存储桶对象生成签名 URL 最大过期时间为 604800 秒或 7 天 然而 经过测试 我发现链接在 24 小时内就会过期 经过一番挖掘 我发现这篇文章声称只有当 aws sdk 获得 IAM 用户授权并且 s3 库使用
  • Python正则表达式找不到子字符串,但它应该找到

    我正在尝试使用 BeautifulSoup 解析 html 来尝试提取网页标题 有时这不起作用 因为网站写得不好 例如Bad End标签 当这不起作用时 我会转到手动正则表达式 我有文字 n n n
  • boost::python 传递 python::list 的引用

    我真的很想知道是否有可能将 python 列表的引用传递给 boost python c dll 我想要实现的是我有一个Python列表 可以随时在C 中读取 假设您在 C 中有一个变量来保存对列表的引用 有什么办法可以做到这一点吗 到目前
  • Await 要求类型 Task 有合适的 GetAwaiter 方法

    我只是将我的工作应用程序从 4 6 1 移至框架 4 0 我遇到了唯一的一个问题 我收到的错误消息如主题所示 我还有第二个错误 SendPingAsync is not a member of Ping 主题错误出现在该行突出显示的以下方法
  • Docker Prisma 错误 P1001:无法访问 `postgres` 处的数据库服务器:`5432`

    经过几个小时的搜索 我必须鞠躬并向您询问有关我的问题的一些建议 我的后端 express prisma postgresql 是 Dockerized 的 可以正常运行 但我无法使用npx prisma来自我的 wsl2 zsh 终端的命令
  • GitHub 页面未加载 CSS

    我有一个发布了 GitHub 页面的网站 https safelyswift github io Swizzle 我想用docs css style css in my index html文件 我尝试过使用完整的 url GitHub 原
  • 将 Unicode 字符打印到 PowerShell 提示符

    我正在尝试设置 Mercurial 以使用 PowerShell 打印出我当前所在的存储库的状态 到目前为止 我已经一切正常 但我希望能够在存储库中时在提示符下打印 不幸的是 PowerShell 在打印 Unicode 字符方面似乎存在一
  • RCurl中的密码SSH认证方法

    我正在使用ftpUpload函数在RCurl用于将文件上传到 sftp 文件服务器的包 我在进行身份验证调用时遇到困难 以下是我的电话 ftpUpload what some file png to sftp some ftp server
  • 隐藏导航窗格

    好的 所以我需要隐藏导航窗格 但很困难 我正在使用一个模块来隐藏它 并尝试了以下方法但无济于事 DoCmd NavigateTo acNavigationCategoryObjectType DoCmd RunCommand acCmdWi
  • 如何使用 C# 将格式化的 HTML 字符串复制到剪贴板以进行粘贴?

    我的最终目标是将格式化的富文本插入 Outlook 检查器 例如 AppointmentItem MailItem 等 我在 MSDN 论坛上问了这个问题 有人回答我应该使用剪贴板复制内容 然后使用我想要使用的目标格式将其粘贴到窗口中 我有
  • 如何更改模拟导入的行为?

    我对 Jest 中的模拟以及如何对实现进行单元测试感到非常困惑 问题是我想嘲笑不同的预期行为 有什么办法可以实现这一点吗 因为导入只能位于文件的顶部 并且为了能够模拟某些内容 必须在导入之前声明它 我还尝试传递一个本地函数 这样我就可以覆盖
  • 嵌套 FormGroup 的 FormControl 是 ng-valid,尽管 FromGroup 是 ng-invalid

    我有一个名为 等级 的嵌套表单组 尽管嵌套表单组 grades 应用了 ng invalid 类 但子表单控件确实应用了 ng valid 类 为什么失效没有从嵌套表单继承到其控件 this schoolyearForm this form
  • 无法确定关联的主体

    在这种关联中 我收到错误 无法确定类型 Foo 和 Bar 之间关联的主要端 必须使用关系流畅 API 或数据注释显式配置此关联的主要端 public class Foo public int Id get set public int M
  • 无法在 Visual Studio 代码中启动 C++ 调试器

    我刚刚从 Netbeans 切换到 Visual Studio 代码 并且无法调试 C 错误是Unable to start debugging Launch options string provided by the project s
  • 从 JSON 获取数据到 D3.js

    I tried d bubbledata values value or d bubbledata values 0 value 但没有得到结果 我怎样才能获得所有有价值的属性 我的代码是 var circles svg selectAll
  • 使用 NSURLSession 时 UI 被阻止

    我正在开发一个需要登录表单的项目 使用网络服务进行身份验证 我连接到服务器没有问题 但似乎 NSURLSession 阻止了我的用户界面 经过大量调试后我真的不知道为什么 为了简单起见 这是我的简短代码 NSMutableURLReques
  • 如何将 PowerShell 与 Visual Studio 命令提示符结合使用?

    我已经使用 Beta 2 一段时间了 运行 Visual Studio 2010 命令提示符时必须输入 cmd exe 这让我抓狂 我曾经有一个美好的vsvars2008 ps1Visual Studio 2008 的脚本 有吗vsvars
  • 如何从 C++ 字符串中删除所有非字母数字字符?

    我正在编写一个软件 它要求我使用 libcurl 处理从网页获取的数据 当我获取数据时 由于某种原因 其中有额外的换行符 我需要找到一种只允许字母 数字和空格的方法 并删除其他所有内容 包括换行符 有什么简单的方法可以做到这一点吗 谢谢 编