Прежде всего, в стандартной библиотеке строк для этого случая нет функции-члена с именем std::string::matches
.
Во-вторых, заголовок вопроса не совпадает с вопросом, который вы задали с кодом. Однако я постараюсь разобраться с обоими. ;)
Как напечатать только текст в строке?
Вы можете просто напечатать каждый элемент в строке (например, char
s), если онэто алфавит, итерируя по нему. Проверка может быть выполнена с использованием стандартной функции std::isalpha
из заголовка <cctype>
. ( См. Живой пример здесь )
#include <iostream>
#include <string>
#include <cctype> // std::isalpha
int main()
{
std::string text = "abc123";
for(const char character : text)
if (std::isalpha(static_cast<unsigned char>(character)))
std::cout << character;
}
Выход :
abc
Как определить, строка содержит только число ?
Предоставить функцию, которая проверяет все символы в строке, являются ли они цифрами. Для этого вы можете использовать стандартный алгоритм std::all_of
(необходимо включить заголовок <algorithm>
) вместе с std::isdigit
(из заголовка <cctype>
). ( См. Живой пример онлайн )
#include <iostream>
#include <string>
#include <algorithm> // std::all_of
#include <cctype> // std::isdigit
#include <iterator> // std::cbegin, std::cend()
bool contains_only_numbers(const std::string& str)
{
return std::all_of(std::cbegin(str), std::cend(str),
[](char charector) {return std::isdigit(static_cast<unsigned char>(charector)); });
}
int main()
{
std::string text = "abc123";
if (contains_only_numbers(text))
std::cout << "String contains only numbers\n";
else
std::cout << "String contains non-numbers as well\n";
}
Выход :
String contains non-numbers as well