如何检查字符串是否包含标点符号c ++
How to check if a string contains punctuation c++
我正在尝试遍历字符串以检查标点符号。我尝试使用 ispunct() 但收到错误消息,指出没有匹配的函数可调用 ispunct。有没有更好的方法来实现这个?
for(std::string::iterator it = oneWord.begin(); it != oneWord.end(); it++)
{
if(ispunct(it))
{
}
}
it
是一个迭代器,它指向字符串中的一个字符。你必须取消引用它才能得到它指向的东西。
if(ispunct(static_cast<unsigned char>(*it)))
Is there a better way to implement this?
使用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';
}
我正在尝试遍历字符串以检查标点符号。我尝试使用 ispunct() 但收到错误消息,指出没有匹配的函数可调用 ispunct。有没有更好的方法来实现这个?
for(std::string::iterator it = oneWord.begin(); it != oneWord.end(); it++)
{
if(ispunct(it))
{
}
}
it
是一个迭代器,它指向字符串中的一个字符。你必须取消引用它才能得到它指向的东西。
if(ispunct(static_cast<unsigned char>(*it)))
Is there a better way to implement this?
使用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';
}