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

Find Punctuation in String C++

本文关键字:查找 标点符号 C++ 字符串      更新时间:2023-10-16

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

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

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

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

您可以使用std::any_of和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); }将获取一个字符并返回对该字符的std::ispunct结果。