如何在C ++中从字符串中剥离所有非字母数字字符?
|
我正在编写一个软件,它要求我使用libcurl处理从网页中获取的数据。当我得到数据时,由于某种原因,它中有额外的换行符。我需要找出一种只允许使用字母,数字和空格的方法。并删除所有其他内容,包括换行符。有没有简单的方法可以做到这一点?谢谢。
没有找到相关结果
已邀请:
11 个回复
稳赣苍卯改
,如果要删除该字符,则返回
;如果要保留它,则返回
:
然后使用
算法从字符串中删除不需要的字符:
根据您的要求,您也许可以使用标准库谓词之一(例如
),而不用编写自己的谓词(您说过您需要匹配字母数字字符和空格,因此也许这不完全符合您的要求。需要)。 如果要使用标准库
函数,则需要进行强制转换以消除C标准库标头
中的
函数(这是您要使用的函数)和C ++标准库标头
中的
(除非要执行特定于语言环境的字符串处理,否则这不是您要使用的语言):
这对于任何序列容器(包括
,
和
)同样有效。该惯用语通常称为“擦除/删除”惯用语。
算法也适用于普通数组。
仅对序列进行一次遍历,因此具有线性时间复杂度。
犁攀富
的先前用法将无法与
一起编译,因此此具有lambda函数的解决方案应封装正确的答案:
嘘伪
,则可以始终循环浏览并仅
所有非字母数字字符。
使用标准库的更好的人可能可以无循环执行此操作。 如果仅使用“ 0”缓冲区,则可以循环浏览,如果一个字符不是字母数字,则将所有字符向后移一个(以覆盖有问题的字符):
献导外拘
孝铜差
结果是:
您可以使用ѭ28determine来确定每个字符是否为字母数字,然后使用
将函数传递给
而不是返回值,只剩下所需的字母数字内容。
筷啸够对铅
屡倒雷图
然后写这个
那么您的字符串只能包含数字字符。
厢界山攀
和
库。
犀寺扦
枫湃揩乾纲
垫歌蝎降凤
很好,但不幸的是,由于此行,它在Visual Studio(调试模式)中不适用于\'Ñ\'等字符:
在isctype.c中 所以,我建议这样的事情: