Я работаю с вектором и пытаюсь заполнить вектор списком слов из текстового файла при условии, что слово не имеет пунктуации. Я смотрю на каждую строку как на строку и пытаюсь найти хороший способ проверить, есть ли в строке пунктуация.
У меня есть что-то подобное для всех апострофов в строке, но мне нужно обобщить это на все знаки препинания. Если в строке нет апострофов, переходите к остальной части кода.
if ((find(line.begin(), line.end(), '\'')) == line.end())
Я довольно новый, и любая помощь будет оценена. Я рассмотрел, возможно, с помощью функции ispunct (), но не мог понять, как реализовать это в этом.
Ты можешь использовать станд :: any_of а также станд :: ispunct.
При использовании чего-то вроде std::any_of
или же std::find_if
самое простое — передать лямбда.
Для вашего случая это будет выглядеть так
#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;
}
Наша лямбда [](char c){ return std::ispunct(c); }
возьмет один символ и вернет результат std::ispunct
на этом персонаже
Других решений пока нет …