priper 表3.3

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是空格或c具有可视形式)
isspace(c)   当c是标点符号时为真(即c不是控制字符、数字、字毋、可打印空白的一种)
isupper(c)   当c是大写字母时为真
isxdigit(c)  当c是十六进制数字时为真
tolower(c)   如果c是大写字毋,输出对应的小写字母:否则原样输出c
toupper(c)   如果c是小写字毋,输出对应的大写字母:否则原样输出c

P83

#include <iostream>
#include <string>
using std::string;
int main()
{
string str("hello world!");
for (auto c : str)//输出str中的每一个字符,包括换行符
{
std::cout << c << std::endl;
}
return 0;
}

运行结果:

/*

h
e
l
l
o


w
o
r
l
d
!

*/

#include <string>
using std::string;
int main()
{
string str("hello world!");
decltype(str.size()) punct_cnt = 0;
for (auto c : str)
{
if (ispunct(c))
{
++punct_cnt;
}

}
std::cout << punct_cnt << "个字符在"<<str<<std::endl;
return 0;
}

运行结果:

/*1个字符在hello world!*/

int main()
{
string str("hello world!");
//转换大写
for (auto &c : str)//&符号不要忘,必须为引用
{
c = toupper(c);//toupper
}
std::cout << str<<std::endl;
return 0;
}

运行结果:

/*HELLO WORLD!*/

int main()
{
string str("hello world!");
if (!str.empty())
{
str[0] =  toupper(str[0]);
}
std::cout << str<<std::endl;
return 0;
}

运行结果:

/*Hello world!*/

3.6 

int main()
{
string str = "asdfghjkl";
for (auto c : str )
{
c = 'X';
std::cout << c << std::endl;//输出一个字符一行
}
std::cout << str << std::endl;//输出一行字符,要想输出X需要使用引用,auto &c
return 0;
}

运行结果:

X
X
X
X
X
X
X
X
X
asdfghjkl

如果auto c换成 auto &c输出结果:

X
X
X
X
X
X
X
X
X
XXXXXXXXX

3.7 

auto换成char型,虽然string输入的是字符串而char是字符,但是for循环是一个字符一个字符读的,也就相当与字符串了

int main()
{
string str = "asdfghjkl";
for (char &c : str )
{
c = 'X';
std::cout << c << std::endl;
}
std::cout << str << std::endl;
return 0;
}

运行结果:

X
X
X
X
X
X
X
X
X
XXXXXXXXX

练习3.10:编写一段程序,读入一个包含标点符号的字符串,将标点符号去除后输出字符串剩余的部分。

int main()
{
string s;
cout << "请输入一个字符串包含符号:" << endl;
getline(cin, s);
for ( auto c : s )
{
if ( !ispunct(c) )
{
cout << c << endl;
}
}
return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值