在字符串C ++

时间:2018-03-15 08:18:28

标签: c++ string punctuation

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

我有类似的东西适用于字符串中的所有撇号,但需要将其概括为所有标点符号。如果该行没有撇号,则继续执行其余代码。

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

我相当新,任何帮助将不胜感激。我看了可能使用ispunct()函数,但无法弄清楚如何实现它。

1 个答案:

答案 0 :(得分:1)

您可以使用std::any_ofstd::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); }将获取一个char并在该char上返回std::ispunct的结果。