如何检查字符串是否包含标点c ++

时间:2018-03-15 03:21:11

标签: c++ loops iterator punctuation

我正在尝试迭代字符串以检查标点符号。我试过使用ispunct()但是收到一个错误,即调用ispunct没有匹配的功能。有没有更好的方法来实现这个?

for(std::string::iterator it = oneWord.begin(); it != oneWord.end(); it++)
{
    if(ispunct(it))
    {
    }
}

2 个答案:

答案 0 :(得分:4)

it是一个迭代器,它指向一个字符串中的一个字符。你必须取消引用才能得到它指向的东西。

if(ispunct(static_cast<unsigned char>(*it)))

答案 1 :(得分:4)

  

有没有更好的方法来实现这个?

使用std::any_of

#include <algorithm>
#include <cctype>
#include <iostream>

int main()
{
   std::string s = "Contains punctuation!!";
   std::string s2 = "No puncuation";
   std::cout << std::any_of(s.begin(), s.end(), ::ispunct) << '\n';
   std::cout << std::any_of(s2.begin(), s2.end(), ::ispunct) << '\n';
}

Live Example