如何仅打印字符串中的文本?我只想从中打印abc
。
string numtext = "abc123";
这里是完整代码:
#include <stdio.h>
int main()
{
string text = "abc123";
if (text.matches("[a-zA-Z]") //get an error initialization makes integer from pointer without a cast
{
printf("%s", text);
}
getch();
}
我的字符串包含数字和字母,我只想打印字母。但是我得到一个错误。我在做什么错?
首先,在这种情况下,没有名为std::string::matches
available in the standard string library的成员函数。
第二,问题的标题与您使用代码提出的问题不匹配。但是,我将尝试同时处理两者。 ;)
如何仅打印字符串中的文本?
您可以简单地在字符串中打印每个元素(即char
s),如果在迭代过程中它是一个字母。可以使用标题std::isalpha
中的标准功能std::isalpha
完成检查。 (<cctype>
)
See live example here
输出:
#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
)以及std::all_of
(来自<algorithm>
标头)。 (std::isdigit
)
std::isdigit
输出:
<cctype>
您可以使用See live example online的#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
find_last_not_of
[此解决方案仅假设std::string
始终具有substr
的模式,这意味着类似std::string numtext = "abc123";
size_t last_character = numtext.find_last_not_of("0123456789");
std::string output = numtext.substr(0, last_character + 1);
的东西会得到numtext
。
在这种情况下使用C ++标准text+num
是个好主意。您可以自定义很多。
下面是一个简单的示例。
ab1c23
此打印中所有匹配的字符串:
output = "ab"