学习C++——文本的输入cin

for、while、do while循环语句另外还有if和switch选择语句。另外重点是cin是如何处理字符输入的。

一、字符串的比较

1、C-风格的字符串的比较

strcmp(word,"book");需要包含头文件<cstring>;当word大于"book"时,结果大于0;

2、string类字符串的比较

str1 > str2; str1 < str2; str1 == str2; 直接用关系符来比较,string类实现了关系符的重载。

二、循环和文本输入

1、使用原始的cin进行输入

如果程序使用循环来读取来自键盘的文本输入,则必须要知道如何停止读入。第一种方法,是使用一个特殊字符,将其作为停止标记。

#include <iostream>
int main()
{
	using namespace std;

	char ch;
	int count = 0;
	cout << "Enter characters;Enter # to quit:\n";
	cin >> ch;
	while(ch != '#')
	{
		cout << ch;
		++count;
		cin >> ch;
	}
	cout << endl << count << " characters read\n";
	cin.get();
	cin.get();
	return 0;
}

总结:读取数据时,cin将忽略空格和换行符,因此输入中的空格没有被回显,也没有包含在计数中。

发送给cin的输入被缓冲,这意味着只有在用户按下回车键之后,它输入的内容才会被发送给程序。

2、使用cin.get(char)进行补救上一个程序中不能读取空格和换行符

成员函数cin.get(ch)可以读取空格、制表符和换行符,它读取一个字符,并将该值赋给ch。

#include <iostream>
int main()
{
	using namespace std;

	char ch;
	int count = 0;
	cout << "Enter characters;Enter # to quit:\n";
	//cin >> ch;//改动的地方
	cin.get(ch);//改动的地方
	while(ch != '#')
	{
		cout << ch;
		++count;
		cin.get(ch);//改动的地方
	}
	cout << endl << count << " characters read\n";
	cin.get();
	cin.get();
	return 0;
}



3、使用哪一个cin.get()

cin.get(name,arSize).get() 等价于 cin.get(name,arSize);  cin.get()

第一个版本的cin.get(char *, int )

第二个版本的cin.get()无参数

第三个版本的cin.get(char) 接收一个char参数,返回的是一个cin对象。

第四个版本的cin.get()可以这样使用,ch = cin.get();类似于cout.put(ch)来显示字符  ;使用例子while( (ch = cin.get())  !=  EOF)

4、文件尾条件

检测文件尾(EOF)。很多操作系统都允许通过键盘来模拟文件尾条件,在UNIX中,可以在行首按下Ctrl+D来实现;在Windows命令提示符模式下,可以在任意位置按下Ctrl+Z和Enter来实现。

检测到文件尾(EOF)后,cin将两位(eofbit和failbit)都设置为1。可以通过成员函数eof()来查看eofbit是否被设置;如果检测到EOF,则cin.eof()将返回true,否则返回false。如果failbit被设置为1,则fail()返回true,否则返回false。  

#include <iostream>
int main()
{
	using namespace std;

	char ch;
	int count = 0;
	cout << "Enter characters;Enter # to quit:\n";
	//cin >> ch;
	cin.get(ch);
	while(cin.fail() == false)//改动的地方
	{
		cout << ch;
		++count;
		cin.get(ch);
	}
	cout << endl << count << " characters read\n";
	while(1);
	return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值