除了可以用cin输入标准类型的数据外还可以用istream类流对象的一些成员函数实现字符的输入。
1.用get函数读入一个字符
(1)不带参数的get函数
其调用函数为
cin.get()
用来从指定的输入流中提取一个字符(包括空字符),函数的返回值就是读入的字符。若遇到输入流中的文件结束符,则函数值返回文件结束标志EOF(End Of File),一般以-1代表EOF,用-1而不用0或者正值,是考虑到不与字符的ASCII代码混淆,但不同的C++系统所用的EOF值有可能不同。
例:用get函数读入字符
#include<iostream>
using namespace std;
int main()
{
int c;
cout<<"enter a sentence:"<<endl;
while((c=cin.get())!=EOF)
cout.put(c); //cout.put('a')是专用于输出单个字符的成员函数
return 0;
}
运行情况如下:
enter a sentence:
I study C++ very hard! //输入一行字符
I study C++ very hard! //输入该字符
----------------------------------------------------------------------------------------------------------------------------
(2)有一个参数的get函数
其调用形式为
cin.get(ch)
其作用是从输入流中读取一个字符,赋给字符变量ch。如果读取成功则函数返回非0值(真),如失败(遇文件结束符)则函数返回0值(假)。
例:
#include<iostream>
using namespace std;
int main()
{
char c;
cout<<"enter a sentence:"<<endl;
while(cin.get(c))
{cout.put(c);}
cout<<"endl"<<endl;
return 0;
}
----------------------------------------------------------------------------------------------------------------------------
(3)有3个参数的get函数
其调用形式为
cin.get(字符数组,字符个数n,终止字符)
或
cin.get(字符指针字符个数n,终止字符)
读取成功返回非0值(真),失败返回0值(假)
例:
#include<iostream>
using namespace std;
int main()
{
char ch[20]l
cout<<"enter a sentence:"<<endl;
cin.get(ch,10,'/n');
cout<<ch<<endl;
return 0;
}
运行情况如下:
enter a sentence:
I study C++ very hard! //输入
I study C //输出
----------------------------------------------------------------------------------------------------------------------------
(3)用成员函数getline函数读入一行字符
其调用形式为
cin.getline(字符数组(或字符指针),字符个数n,终止标识符)
例:
#include<iostream>
using namespace std;
int main()
{
char ch[20];
cout<<"enter a sentence:"<<endl;
cin>>ch;
cout<<"The string read with cin is :"<<ch<<endl;
cin.getline(ch,20,'/'); //读19个字符或遇'/'结束
cout<<"The second part is:"<<ch<<endl;
cin.getline(ch,20); //读19个字符或遇'/n'结束,,,,,想想为什么是读19个字符呢?
cout<<"The third part is:"<<ch<<endl;
return 0;
}
运算结果如下:
enter a sentence:
I study C++ very hard!
The string read with cin is :I
The second part is: study C++ very har
The third part is:
Press any key to continue
----------------------------------------------------------------------------------------------------------------------------
istream类的其他成员函数
常用的有以下几种:
1.eof 函数
eof是end of file 的缩写,表示“文件结束”。从输入流读取数据,如果达到文件末尾(遇文件结束符),eof 函数值为非零值(真),否则为0(假)。
例:逐个读入一行字符,将其中的非空字符输出
#include<iostream>
using namespace std;
int main()
{
char c;
while(!cin.eof())
if((c=cin.get())!=' ')
cout.put(c);
return 0;
}
运算结果:
I study C++ very hard!
IstudyC++veryhard!
^Z
Press any key to continue
----------------------------------------------------------------------------------------------------------------------------
另外,
还有peek 函数,cin.peek()
putback函数,cin.putback(ch)
ignore 函数,cin.ignore(n,终止字符)
相关用法,问问度娘或者google去。。。