字符串中单个字符的用法

我们使用字符串时经常要对字符串中单个字符进行处理,比如检测一个string对象是否包含空白,或者把string对象中的字母大写改为小写,查看某个特定字符是否出现,判断字符串是否为数字等等。

这类处理的关键是要获取字符本身。有时需要处理string对象中的每一个字符,另外一些时候则只需处理某个特定的字符,还有些时候遇到某个条件处理就要停下来。

在cctype头文件中定义了一组标准库函数处理字符串的工作。

cctype头文件中的函数

isalnum(c)    当c是字母或数字时为真

isalpha(c)     当c是字母时为真

iscntrl(c)       当c是控制字符时为真

isdigit(c)       当c是数字时为真

isgraph(c)    当c不是空格但可打印时为真

islower(c)     当c是小写字母时为真

isprint(c)       当c是可打印字符时为真(即c是空格或c具有可视形式)

ispunct(c)     当c是标点符号时为真(即c不是控制字符、数字、字母、可打印空白中的一种)

isspace(c)    当c是空白时为真(即c是空格、横向制表符、纵向制表符、回车符、换行符、进纸符中的一种)

isupper(c)    当c是大写字母时为真

isxdigit(c)     当c是十六进制数字时为真

tolower(c)    如果c是大写字母,输出对应的小写字母,否则原样输出c

toupper(c)   如果c是小写字母,输出对应的大写字母,否则原样输出c

处理每个字符,可以使用基于范围的for语句,c++11新标准
(vs2010编译器不支持,呵呵,我用不了)

for(declaration:expression)

statement

example:

string s("hello, world");

for(auto c:s)

cout<<c<<endl;

代码:

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

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

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	//初始化字符串,初始化分为直接初始化()和拷贝初始化“=”
	string str("HEllo, wo shi Guo jia zhu xi de ****12134556, xia wo yi tiao!!!");
	string::size_type len=str.size();//长度
	cout<<"字符串为:"<<str<<endl<<"字符串的长度为:"<<len<<endl;
	cout<<"操作1:判断是否是字母,如果是字母,则小写字母变为大写字母"<<endl
		<<",大写字母变为小写字母。如果是数字,执行加1操作。如果是空"<<endl
		<<"格,转换为双空格。计算标点符号的个数。"<<endl;
	//补充知识
	string a="我";
	cout<<"一个中文字符"<<a<<"占"<<a.size()<<"两个字节。"<<endl;
	/*char c;*/
	char *c;
	int count=0;
	for(int i=0; i<len; i++)
	{
		//char &c=str.at(i);
		c=&str.at(i);
		if(isalpha(*c))
		{
			if(isupper(*c))
				*c=tolower(*c);
			else if(islower(*c))
				*c=toupper(*c);
		}
		else if(isdigit(*c))
		{
			*c=*c+1;
		}
		else if(ispunct(*c))
		{
			++count;
		}
	}
	cout<<"字符串修改后为:"<<str<<endl;
	cout<<"字符串中标点符号个数为:"<<count<<endl;
	system("pause");
	return 0;
}

一般有两种方法访问单一字符:下标操作符[ ]和成员函数at()。下标操作符在使用时不检查索引的有效性。超出范围的下标将引发不可预知的结果。下标操作符返回的是该位置字符的引用。at()在使用时会检查下标是否有效,超出范围会抛出。at()返回的是该位置字符的拷贝值。

时间: 2024-10-25 09:06:44

字符串中单个字符的用法的相关文章

js如何将字符串中的字符位置倒转

js如何将字符串中的字符位置倒转:在实际需要中,可能需要将字符串中的字符的位置反转,当然可能应用不会这么直接,下面就通过代码示例介绍一下如何实现此效果,希望能够给需要的朋友或多或少带来一定的帮助.代码实例如下: var str="antzone"; var strArray=str.split(""); console.log(strArray.reverse().join("")); 以上代码实现了我们的要求,非常的简单,就是使用split()

计算字符串中每个字符出现次数

作者:zccst 思想原理:把字符串分割为数组,粒度为每一个字符.循环该数组,用正则替换原字符串对于字符,并计算替换前后字符串长度差值,即为该字符出现的次数. 另外,还可以对重复次数进行排序. 用到的知识点: 1,正则表达式.基本写法,RegExp,replace的用法. 2,数组中的sort.自定义函数排序.(sort默认按字符编码排序) function charCntInString (argument) { var str = argument,result = [],beforeLen

C#删除字符串中重复字符的方法

本文实例讲述了C#删除字符串中重复字符的方法.分享给大家供大家参考.具体实现方法如下: 代码如下: #region 删除重复字符 string s = "sdfffffsrlkjesgljfdg03940864e5=_0R9DTGR98YUI\\|||'\\???fdf///"; Response.Write("<br/>String:" + s + "<br/>Result:"); IEnumerable<char

要求将字符串中的字符按字符出现的次数从小到大进行排序

package com.xiawei.sort; import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry; public class TestString {//要求将字符串中的字符按字符出现的次数

C语言-字符串(单个字符)和字符数组

一.字符串(单个字符)和字符数组的定义 1.单个字符的定义 char i = ‘x’ (单个字符的定义) 字符串创建后为常量无法修改 2.字符数组的定义 char i [4]=”xxxx”; char i []=”xxxx”; char i [4]={‘x’’x’’x’’x’}; 其中定义的数组的元素数要比实际赋值的数量多一,用于存放\0位置 字符数组只有在定义时才能将整个字符串一次性地赋值给它,一旦定义完了,就只能一个字符一个字符地赋值了. 二字符串(单个字符)和字符数组输入 1.scanf函

1.判断字符串中的字符是否唯一

如果我们假设字符集是ASCII字符,那么我们可以开一个大小为256的bool数组来表征每个字符的出现.数组初始化为false,遍历一遍字符串中的字符,当bool数组对应位置的值为真, 表明该字符在之前已经出现过,即可得出该字符串中有重复字符.否则将该位置的bool数组 值置为true. 核心代码: 1 bool isCharUnique(string s) 2 { 3 bool a[256]; 4 int i =0; 5 memset(a,0,sizeof(a)); 6 int len = s.

寻找字符串中出现字符最多的次数,出现次数最多的字符,出现次数最多的字符的索引

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>demo</title> <link rel="stylesheet" href="css.css"> <script src="js.js"></script>

【c语言】编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。

/*编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列. 要求:不能使用C函数库中的字符串操作函数.*/ #include <stdio.h> #include <assert.h> void reverse_string(char const * string) { assert( string != NULL ); if( *string != '\0' ) { string++; reverse_string

将字符串中不同字符的个数打印出来

描述:  找出字符串中,不同的字符的个数. 题目类别:  字符串  难度:  初级  运行时间限制: 无限制 内存限制: 无限制 阶段:  入职前练习  输入: 输入一个字符串,'\0'作为字符串结束符. 输出: 输出字符串中不同字符的个数. 样例输入: 122345 样例输出: 5 完整代码: #include <iostream> using namespace std; int main() { int cnt[256]={0}; char s[100]; int count=0; ge