C++循环文本输入-cin、cin.get(char)、cin.fail()
【摘要】 1.最简单的:
如果程序要使用循环来读取来自键盘的文本输入,并且遇到'#'字符时就停止读取输入
//循环使用cin#include<iostream>int main(){ using namespace std; char ch; int count = 0; cout << "输入字符串;以# 表示退出: \n"; cin >> ch; while (ch!='#'...
1.最简单的:
如果程序要使用循环来读取来自键盘的文本输入,并且遇到'#'字符时就停止读取输入
-
//循环使用cin
-
#include<iostream>
-
int main()
-
{
-
using namespace std;
-
char ch;
-
int count = 0;
-
cout << "输入字符串;以# 表示退出: \n";
-
cin >> ch;
-
while (ch!='#')
-
{
-
cout << ch;
-
++count;
-
cin >> ch;
-
}
-
cout << endl << count << "字节\n";
-
system("pause");
-
return 0;
-
}
输入:my name is hello#world!
观察输出结果,发现确实以‘#’为截止符,但是为什么程序在输出时省略了空格呢?原因在于cin,读取char值的时候,与读取其他基本类型一样,cin将忽略空格和换行符,所以空格没被显示,也没被计数。
2. 使用cin.get(char)进行补救
-
//循环使用cin.get()
-
#include<iostream>
-
int main()
-
{
-
using namespace std;
-
char ch;
-
int count = 0;
-
cout << "输入字符串;以# 表示退出: \n";
-
cin.get(ch); //替换 cin >> ch;
-
while (ch != '#')
-
{
-
cout << ch;
-
++count;
-
cin.get(ch); //替换 cin >> ch;
-
}
-
cout << endl << count << "字节\n";
-
system("pause");
-
return 0;
-
}
输入:my name is hello#world!
此时,空格也被记录下来。
(备注:有的同学会很好奇,cin.get()似乎能够有1个参数,也可以2个参数,这到底怎么使用?这个其实是C++重载特性)
3. 进阶:假如'#'本身就有用,那么岂不是这个截止符 还要换?答案是:不必麻烦!有文件尾条件EOF
使用CTRL+Z <ENTER>来模仿结束
-
//循环使用cin.get() ,截止符EOF默认
-
#include<iostream>
-
int main()
-
{
-
using namespace std;
-
char ch;
-
int count = 0;
-
cout << "输入字符串;以# 表示退出: \n";
-
cin.get(ch); //替换 cin >> ch;
-
while (cin.fail() == false ) //替换 while(ch != '#')
-
{
-
cout << ch;
-
++count;
-
cin.get(ch); //替换 cin >> ch;
-
}
-
cout << endl << count << "字节\n";
-
system("pause");
-
return 0;
-
}
备注:51字节,其实包含了最后CTRL+Z这一个。
文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。
原文链接:kings.blog.csdn.net/article/details/84304185
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)