C++ isprint()

C++ isprint()

isprint()是C++中的预定义函数,用于处理字符串和字符。所需的字符串和字符函数的头文件分别是cstring和cctype。如果参数包含任何可打印字符,则使用该函数来确定该事实。在C++中,有许多种可打印字符,包括:

digits ( 0123456789 )
uppercase letters ( ABCDEFGHIJKLMNOPQRSTUVWXYZ )
lowercase letters ( abcdefghijklmnopqrstuvwxyz )
punctuation characters ( !"#$%&'()*+,-./:;?@[\]^_`{ | }~ )
space ( )

内置的C++函数”isprint()”位于”cctype.h”头文件中,用于判断一个字符是否可打印。

除了空格字符(‘ ‘)之外,Isprint对于常见字符都返回true。

这个函数(Isprint)还有一个本地化的模型版本,可以在cctype头文件中找到。

要确定一个字符串中是否存在非打印字符,可以使用Isprint()函数。

-Isprint()是一个内部函数,提供了处理无法打印字符的有效方法。

通过使用-Isprint(),程序员可以减少代码行数。

确实,-Isprint()能加快软件编译速度。

将cctype.h包含在您的软件中,以便为用户启用多个附加的相关函数,除了isprint()之外。cctype.h中还有其他函数,包括

isblank(检查字符是否为空格)(检查字符是否为空格)

Iscntrl(检查字符是否为控制字符)(检查字符是否为控制字符)

isdigit(检查字符是否为十进制数字)(检查字符是否为十进制数字)

Isgraph(检查字符是否有图形表示)(检查字符是否有图形表示)

语法

int isprint( int c ); 
c : character to be checked.
Returns a non-zero value(true) if c is a printable 
character else, zero (false).

时间复杂度:O(n)

辅助空间:O(1)

给定一个C++字符串,我们需要计算字符串中可打印字符的数量。算法:

1)逐个遍历给定的字符串的每个字符,检查字符是否是可打印字符。

2)如果是可打印字符,则将计数器递增1,否则遍历到下一个字符。

3)打印计数器的值。

示例

Input : string = 'My name \n is \n Ayush'
Output : 18
Input :string = 'I live in \n Dehradun'
Output : 19
// CPP program to count printable characters in a string
#include 
#include 

#include 
using namespace std;

// function to calculate printable characters
void space(string& str)
{
    int count = 0;
    int length = str.length();
    for (int i = 0; i< length; i++) {
        int c = str[i];
        if (isprint(c))
            count++;
    }
    cout << count;
}

// Driver Code
int main()
{
    string str = "My name \n is \n Ayush";
    space(str);
    return 0;
}

输出:

18

Isprint()的参数为:

C是要检查的字符,作为int型或EOF进行转换。

示例

Input-: first line /n second line /n
Output-: first line
Input-: line one /n line two/n line three /n
Output-: line one

由于换行字符无法打印,它只会打印一行。

示例

/* isprint example */
#include 
#include 
int main () {
   int i=0;
   char str[]="first line n second line n";
   while (isprint(str[i])) {
putchar (str[i]);
i++;
   }
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出 –

第一行 n 第二行 n

示例

#include 
#include 
#include 
using namespace std;
int main() {
   char str[] = "Hellotallnhow are you";
for (int i=0; i

输出

如果我们运行上述代码,将生成以下输出 –

Hellotallnhow are you

注释 就像<cctype>中的其他所有函数一样,如果参数的值既不能表示为无符号字符,也不等于EOF,std::isprint的行为是未定义的。为了安全地使用这些函数与普通字符(或有符号字符),参数应首先转换为无符号字符:

bool my_isprint(char ch)
{

    return std::isprint(static_cast(ch));
}

同样,当迭代器的值类型为char或signed char时,它们不应直接与标准算法一起使用。而应先将值转换为unsigned char:

int count_prints(const std::string& s)
{
    return std::count_if(s.begin(), s.end(), 
                      // static_cast(std::isprint)         // wrong
                      // [](int c){ return std::isprint(c); }           // wrong
                      // [](char c){ return std::isprint(c); }          // wrong
[](unsigned char c){ return std::isprint(c); } // correct
                        );
}

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程