我正在使用向量,并尝试使用txt文件中的单词列表填充向量,条件是单词没有标点符号。我正在查看每一行作为字符串,并试图找到一个好方法来测试字符串是否有标点符号。
我有类似的东西适用于字符串中的所有撇号,但需要将其概括为所有标点符号。如果该行没有撇号,则继续执行其余代码。
if ((find(line.begin(), line.end(), '\'')) == line.end())
我相当新,任何帮助将不胜感激。我看了可能使用ispunct()函数,但无法弄清楚如何实现它。
答案 0 :(得分:1)
您可以使用std::any_of和std::ispunct。
使用std::any_of
或std::find_if
之类的内容时,最简单的方法是将其传递给lambda。
对于你的情况,它看起来像
#include <iostream>
#include <algorithm>
#include <cctype>
int main() {
std::string str = "fdsfd/jl";
if (std::any_of(str.begin(), str.end(), [](char c){ return std::ispunct(c); } ))
std::cout << "PUNCT!";
return 0;
}
我们的lambda [](char c){ return std::ispunct(c); }
将获取一个char并在该char上返回std::ispunct
的结果。