cin.get(ch)函数可以从输入流里面读取任意字符(包括空字符,换行符,制表符等),它等效下面的操作。
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main()
{
char ch;
cin.get(ch);
cout << ch << endl;
cin >> noskipws;
cin >> ch >>skipws;
system("pause");
return 0;
}
cout.put(ch)和cin.get(ch)是一对相反操作。
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main()
{
char ch;
cin.get(ch);
//cout << ch << endl;
cout.put(ch);
system("pause");
return 0;
}
cin.get()和上面带参的有一定区别,它返回的是unsigned int 类型,也就是字符的ascil值。它这么处理最主要是想,返回一个真实字母,因为有些字符无法返回,例如文件尾字符。
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main()
{
char ch;
ch = cin.get();
cout.put(ch);
system("pause");
return 0;
}
cin.putback(ch),将字符ch放入流里面。
如我输入ab
第一个put会输出a,然后cin.putback(ch)将a放进流里面,此刻的流仍然为ab第二次读取仍然为a。
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main()
{
char ch;
ch = cin.get();
cout.put(ch);
cin.putback(ch);
cin.get(ch);
cout.put(ch);
system("pause");
return 0;
}
cin.unget(),回退到最近一个读取过的字符位置,注意别和cin.putback(ch)连用不然产生意想不到状况,博主认为,这个是破坏了流读取记录。导致有问题。
先给个正常例子:设输入为a,先读取a,再用unget进行回退,ch1读取上一个字符,也就是a。
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main()
{
char ch;
char ch1;
ch = cin.get();
cout.put(ch);
cin.unget();
cin.get(ch1);
cout.put(ch1);
system("pause");
return 0;
}
错用例子:
无论你输入多么长一段,只会返回第一个字符,不大了解的慎用!!!!!!
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main()
{
char ch;
char ch1;
ch = cin.get();
cout.put(ch);
cin.putback(ch);
cin.unget();
cin.get(ch1);
cout.put(ch1);
system("pause");
return 0;
}
cin.peek();虽然读取该字符,但是不从流里面删除它!!
和cin.get(ch),再使用cin.putback(ch)等效,关键是它可以和cin.unget()连用。
我就不举例了!