在字符串 C++ 中查找标点符号

Find Punctuation in String C++

我正在使用一个向量,并尝试用 txt 文件中的单词列表填充该向量,条件是该单词没有标点符号。我将每一行视为一个字符串,并试图找到一种好方法来测试字符串中是否包含标点符号。

我有这样的东西适用于字符串中的所有撇号,但需要将其推广到所有标点符号。如果该行没有撇号,则继续执行其余代码。

if ((find(line.begin(), line.end(), '\'')) == line.end())

我是新手,如有任何帮助,我们将不胜感激。我考虑过可能使用 ispunct() 函数,但无法弄清楚如何将其实现。

您可以使用 std::any_of and std::ispunct.

使用 std::any_ofstd::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); } 将采用一个字符,return std::ispunct 在该字符上的结果。