C/C++ cctype中非常实用的判断是否是数字,是否是字母,转换大小写,判断是否是运算符字符等,实用的小函数

在使用字符匹配或者从输入端字符判断的时候,经常不能控制客户端输入的情况是否匹配,这个时候就需要判断输入的字符是数字,字符还是控制字符等。

其中cctype文件就为我们提供了几种非常实用的函数。

1. 使用isalnum()判断指定的字符是数还是字符

这里给定一串固定的字符串"05-9*ac zACZ+",从中找出是字符或数字的项目:

// Len_cctype.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <cctype>
#include <iostream>

void PrintfCharArray(char* data)
{
	printf("len = %d\n", strlen(data));
	for (int i = 0; i < strlen(data); i++)
	{
		printf("\t data[%d]: %c\n", i, data[i]);		
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	char data[] = { "05-9*ac zACZ+" };
	PrintfCharArray(data);

	printf("\n调用函数isalnum():\n");
	for (int i = 0; i < strlen(data); i++)
	{
		if (isalnum(data[i]))
		{
			printf("\tdata[%d] = %c \n", i, data[i]);
		}
	}
	printf("是数字或字母\n");
	
	return 0;
}

执行结果:

2. 使用isalpha()找出其中的字符

// Len_cctype.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <cctype>
#include <iostream>

void PrintfCharArray(char* data)
{
	printf("len = %d\n", strlen(data));
	for (int i = 0; i < strlen(data); i++)
	{
		printf("\t data[%d]: %c\n", i, data[i]);		
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	char data[] = { "05-9*ac zACZ+" };
	PrintfCharArray(data);

	printf("\n调用函数isalpha():\n");
	for (int i = 0; i < strlen(data); i++)
	{
		if (isalpha(data[i]))
		{
			printf("\tdata[%d] = %c \n", i, data[i]);
		}
	}
	printf("是字符\n");
	
	return 0;
}

执行结果:

3. 使用iscntrl()找出其中的控制字符

在字符串"05-9*ac zACZ+\n\t"中第13位是换行符'\n',第14位是制表符'\t',属于控制字符:

源码:

// Len_cctype.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <cctype>
#include <iostream>

void PrintfCharArray(char* data)
{
	printf("len = %d\n", strlen(data));
	for (int i = 0; i < strlen(data); i++)
	{
		printf("\t data[%d]: %c\n", i, data[i]);		
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	char data[] = { "05-9*ac zACZ+\n\t" };
	PrintfCharArray(data);

	printf("\n调用函数iscntrl():\n");
	for (int i = 0; i < strlen(data); i++)
	{
		if (iscntrl(data[i]))
		{
			printf("\tdata[%d] = head[%c]tail\n", i, data[i]);
		}
	}
	printf("是字符\n");
	
	return 0;
}

执行结果:

4. 使用isdigit()找出字符中的数字

源码:

// Len_cctype.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <cctype>
#include <iostream>

void PrintfCharArray(char* data)
{
	printf("len = %d\n", strlen(data));
	for (int i = 0; i < strlen(data); i++)
	{
		printf("\t data[%d]: %c\n", i, data[i]);		
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	char data[] = { "05-9*ac zACZ+\n\t" };
	PrintfCharArray(data);

	printf("\n调用函数isdigit():\n");
	for (int i = 0; i < strlen(data); i++)
	{
		if (isdigit(data[i]))
		{
			printf("\tdata[%d] = %c\n", i, data[i]);
		}
	}
	printf("是数字\n");
	
	return 0;
}

执行结果:

5. 使用isgraph()找出除空格之外的打印字符:

源码:

// Len_cctype.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <cctype>
#include <iostream>

void PrintfCharArray(char* data)
{
	printf("len = %d\n", strlen(data));
	for (int i = 0; i < strlen(data); i++)
	{
		printf("\t data[%d]: %c\n", i, data[i]);		
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	char data[] = { "05-9*ac zACZ+\n\t" };
	PrintfCharArray(data);

	printf("\n调用函数isgraph():\n");
	for (int i = 0; i < strlen(data); i++)
	{
		if (isgraph(data[i]))
		{
			printf("\tdata[%d] = %c\n", i, data[i]);
		}
	}
	printf("是除空格之外的打印字符\n");
	
	return 0;
}

执行结果:

6. 使用islower)找出小写字符:

源码:

// Len_cctype.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <cctype>
#include <iostream>

void PrintfCharArray(char* data)
{
	printf("len = %d\n", strlen(data));
	for (int i = 0; i < strlen(data); i++)
	{
		printf("\t data[%d]: %c\n", i, data[i]);		
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	char data[] = { "05-9*ac zACZ+\n\t" };
	PrintfCharArray(data);

	printf("\n调用函数islower():\n"); 
	for (int i = 0; i < strlen(data); i++)
	{
		if (islower(data[i]))
		{
			printf("\tdata[%d] = %c\n", i, data[i]);
		}
	}
	printf("是小写字母\n");
	
	return 0;
}

执行结果:

7. 使用isprint()找出包含空格的打印字符:

源码:

// Len_cctype.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <cctype>
#include <iostream>

void PrintfCharArray(char* data)
{
	printf("len = %d\n", strlen(data));
	for (int i = 0; i < strlen(data); i++)
	{
		printf("\t data[%d]: %c\n", i, data[i]);		
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	char data[] = { "05-9*ac zACZ+\n\t" };
	PrintfCharArray(data);

	printf("\n调用函数isprint():\n"); 
	for (int i = 0; i < strlen(data); i++)    
	{
		if (isprint(data[i]))
		{
			printf("\tdata[%d] = %c\n", i, data[i]);
		}
	}
	printf("是包括空格的打印字符\n");
	
	return 0;
}

执行结果:

8. 使用ispunct()找出所有的标点符号:

// Len_cctype.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <cctype>
#include <iostream>

void PrintfCharArray(char* data)
{
	printf("len = %d\n", strlen(data));
	for (int i = 0; i < strlen(data); i++)
	{
		printf("\t data[%d]: %c\n", i, data[i]);		
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	char data[] = { "05-9*ac zA.CZ+\n\t" };
	PrintfCharArray(data);

	printf("\n调用函数ispunct():\n"); 
	for (int i = 0; i < strlen(data); i++)    
	{
		if (ispunct(data[i]))
		{
			printf("\tdata[%d] = %c\n", i, data[i]);
		}
	}
	printf("是标点符号\n");
	
	return 0;
}

执行结果:

9. 使用ispunct()找出所有标准空白字符,如空格、进制、换行符、回车、水平制表符或者垂直制表符:

源码:

// Len_cctype.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <cctype>
#include <iostream>

void PrintfCharArray(char* data)
{
	printf("len = %d\n", strlen(data));
	for (int i = 0; i < strlen(data); i++)
	{
		printf("\t data[%d]: %c\n", i, data[i]);		
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	char data[] = { "05-9*ac zA.CZ+\n\t" };
	PrintfCharArray(data);

	printf("\n调用函数isspace():\n"); 
	for (int i = 0; i < strlen(data); i++)    
	{
		if (isspace(data[i]))
		{
			printf("\tdata[%d] = %c\n", i, data[i]);
		}
	}
	printf("是标准空白字符\n");
	
	return 0;
}

执行结果:

10. 使用isupper()找出所有的大写字符:

// Len_cctype.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <cctype>
#include <iostream>

void PrintfCharArray(char* data)
{
	printf("len = %d\n", strlen(data));
	for (int i = 0; i < strlen(data); i++)
	{
		printf("\t data[%d]: %c\n", i, data[i]);		
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	char data[] = { "05-9*ac zA.CZ+\n\t" };
	PrintfCharArray(data);

	printf("\n调用函数isupper():\n"); 
	for (int i = 0; i < strlen(data); i++)    
	{
		if (isupper(data[i]))
		{
			printf("\tdata[%d] = %c\n", i, data[i]);
		}
	}
	printf("是大写字符\n");
	
	return 0;
}

执行结果:

11. 使用isxdigit()找出所有十六进制数字(0~F):

源码:

// Len_cctype.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <cctype>
#include <iostream>

void PrintfCharArray(char* data)
{
	printf("len = %d\n", strlen(data));
	for (int i = 0; i < strlen(data); i++)
	{
		printf("\t data[%d]: %c\n", i, data[i]);		
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	char data[] = { "05-9*ac zA.CZ+\n\t" };
	PrintfCharArray(data);

	printf("\n调用函数isxdigit():\n"); 
	for (int i = 0; i < strlen(data); i++)    
	{
		if (isxdigit(data[i]))
		{
			printf("\tdata[%d] = %c\n", i, data[i]);
		}
	}
	printf("是十六进制数字\n");
	
	return 0;
}

执行结果:

12. 使用tolower()让大写字符转换成小写,非字母的保持不变:

源码:

// Len_cctype.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <cctype>
#include <iostream>

void PrintfCharArray(char* data)
{
	printf("len = %d\n", strlen(data));
	for (int i = 0; i < strlen(data); i++)
	{
		printf("\t data[%d]: %c\n", i, data[i]);		
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	char data[] = { "0aczACZ+" };
	PrintfCharArray(data);

	printf("\n调用函数tolower()之后:\n"); 
	for (int i = 0; i < strlen(data); i++)    
	{
		data[i] = tolower(data[i]);
		printf("\tdata[%d] = %c\n", i, data[i]);
	
	}
	printf("将小写字符转换成大写\n");
	
	return 0;
}

执行结果:

13. 使用tolower()让小写字符转换成大写,非字母的保持不变:

源码:

// Len_cctype.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <cctype>
#include <iostream>

void PrintfCharArray(char* data)
{
	printf("len = %d\n", strlen(data));
	for (int i = 0; i < strlen(data); i++)
	{
		printf("\t data[%d]: %c\n", i, data[i]);		
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	char data[] = { "0aczACZ+" };
	PrintfCharArray(data);

	printf("\n调用函数toupper()之后:\n"); 
	for (int i = 0; i < strlen(data); i++)    
	{
		data[i] = toupper(data[i]);
		printf("\tdata[%d] = %c\n", i, data[i]);
	
	}
	
	return 0;
}

执行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WendyWJGu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值