在字符串 C++ 中查找标点符号
Find Punctuation in String C++
我正在使用一个向量,并尝试用 txt 文件中的单词列表填充该向量,条件是该单词没有标点符号。我将每一行视为一个字符串,并试图找到一种好方法来测试字符串中是否包含标点符号。
我有这样的东西适用于字符串中的所有撇号,但需要将其推广到所有标点符号。如果该行没有撇号,则继续执行其余代码。
if ((find(line.begin(), line.end(), '\'')) == line.end())
我是新手,如有任何帮助,我们将不胜感激。我考虑过可能使用 ispunct() 函数,但无法弄清楚如何将其实现。
您可以使用 std::any_of and 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); }
将采用一个字符,return std::ispunct
在该字符上的结果。
我正在使用一个向量,并尝试用 txt 文件中的单词列表填充该向量,条件是该单词没有标点符号。我将每一行视为一个字符串,并试图找到一种好方法来测试字符串中是否包含标点符号。
我有这样的东西适用于字符串中的所有撇号,但需要将其推广到所有标点符号。如果该行没有撇号,则继续执行其余代码。
if ((find(line.begin(), line.end(), '\'')) == line.end())
我是新手,如有任何帮助,我们将不胜感激。我考虑过可能使用 ispunct() 函数,但无法弄清楚如何将其实现。
您可以使用 std::any_of and 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); }
将采用一个字符,return std::ispunct
在该字符上的结果。