C++ primer plus 第5章 循环和关系表达式

1. 用strcmp()测试字符串是否相等
  • 如果str1和str2相等,则下列表达式为true
strcmp(str1, str2) == 0
  • 如果str1和str2不相等,则下列表达式为true
strcmp(str1, str2) != 0
strcmp(str1, str2)

2. 循环文本输入
2.1 使用原始cin进行输入
int main()
{
char ch;
int count = 0;

cin >> ch;
while(ch != '#')
{
cout << ch;
count++;
cin>>ch;
}
cout << count;
system("pause");
}
cin将忽略空格和换行符;
发送给cin的输入被缓冲,只有在用户按下enter键后,输入的内容才会发送给程序
2.2 使用cin.get(char)
cin.get(ch)读取输入中的下一个字符,包括空格、制表符、换行符,解决了2.1中cin忽略空格的问题
int main()
{
char ch;
int count = 0;

cin.get(ch);
while(ch != '#')
{
cout << ch;
count++;
cin.get(ch);
}
cout << count;
system("pause");
}
2.3 EOF
检测到文件尾EOF后,cin将eofbit和failbit都设置为1,cin.eof()返回true。如果eof或failbit设置为1,则cin.fail()返回true
int main()
{
char ch;
int count = 0;

cin.get(ch);
while(cin.fail() == false)
{
cout << ch;
count++;
cin.get(ch);
}
cout << count;
system("pause");
}
DOS下以ctrl+Z,Enter结束
2.4 常见的做法
cin.get(ch)返回一个cin对象,cin出现在需要bool值的地方时,istream类提供了将istream对象转换为bool值得函数,因此可简化为
int main()
{
char ch;
int count = 0;

while(cin.get(ch))
{
cout << ch;  // 或cout.put(ch);
count++;
}
cout << count;
system("pause");
}

cin.get()返回输入中的下一个字符(将字符编码作为int值返回)而不是cin对象,ch = cin.get()

2.5 EOF是int类型,所以与EOF做比较需要定义ch为int型,在输出时有时需要强制转换成char
int main()
{
int ch;
int count = 0;

while((ch = cin.get()) != EOF)
{
cout.put((char)ch);
count++;
}
cout << count;
system("pause");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值