ai didi

c++ - 使用 ispunct() 删除标点符号

转载 作者:太空狗 更新时间:2023-10-29 19:53:01 24 4
gpt4 key购买 nike

ispunct() 在以这种方式分隔单词时效果很好“一,二;三”。然后它将删除“,;”并替换为给定的字符。

但如果以这种方式给出字符串 "ts='TOK_STORE_ID';" 那么它会将 "ts='TOK_STORE_ID';" 作为一个单独的标记,或

"one,one, two;four$three two" 作为三个标记 1。 "一,一"2. "二;四$三"3. "二"

有没有一个可以让 "one,one, two;four$three two" 被认为是 "one one two four three two" 每个单独的标记?

手动编写代码如下:

for(i=0;i<str.length();i++)
{
//validating each character
}

当字符串非常非常长时,此操作将变得非常昂贵。

那么有没有像ispunct()这样的函数呢?还是别的?

在 c 中,我们这样做是为了比较每个字符:

  for(i=0;i<str.length();i++)
{
if(str[i]==',' || str[i]==",") // Is there any way here to compare with all puctuations in one shot?
str[i]=" "; //replace with space

}

在 C++ 中,正确的方法是什么?

最佳答案

当字符串非常非常长时,这个操作会变得非常昂贵。

不,不会。这将是一个 O(n) 操作,这对解决这个问题很有帮助。对于此操作,您不能比这更好,因为无论哪种方式,您都必须查看字符串中的每个字符。如果不查看字符串中的每个字符,就无法做到这一点。

关于c++ - 使用 ispunct() 删除标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18544752/

24 4 0
文章推荐: c++ - 使用 operator [] 直接设置 std::vector 内容
文章推荐: c# - 如何以编程方式选择列表框中的项目?
文章推荐: c# - 为什么 StringBuilder 类是密封的?
文章推荐: c++ - 写入类的最后一个字节
太空狗
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com