1.系统标准的输入流(重点)
1.流的概念和流类库的结构(了解)
标准IO:对系统的标准输入输出设备进行读写
文件IO:对磁盘进行输入输出读写
串IO:对内存进行读写 申请数组
2.成员函数
cin.get() //一次只能从缓冲区读取一个字符 可以接受空格 换行
//首先cin的输入有一个特点,在遇到‘ ’(空格)时,会结束输入,而cin.get()则将‘ ’也作为了一个字符放到输入里。那其次就是cin.get()的用法了。其用法如下:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
int main() {
//输入的是as换行
char c = cin.get(); //a
cout << c << endl;
c = cin.get(); //s
cout << c << endl;
c = cin.get(); //换行
cout << c << endl;
c = cin.get(); //阻塞
cout << c << endl;
}
cin.get(一个参数) //读一个字符
int main() {
char c1;
cin.get(c1); //获取字符
}
cin.get(两个参数) //可以读字符串
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
int main() {
char c1, c2, c3, c4;
cin.get(c1).get(c2).get(c3).get(c4); //获取字符
cout << c1 << c2 << c3 << c4;
}
int main() {
char a[20]; //注意,可以接收空格且换行不拿走 留在缓冲区 此例子c接受了换行符
cin.get(a, 20); //第二个参数是接受字符的个数
char c = cin.get();
if (c == '\n') {
cout << "enter is no jie" << endl;
}
cout << a << endl;
}
cin.getline() //取一行,换行符丢弃
#include<iostream>
using namespace std;
int main() {
char a[20];
cin.getline(a, 20); //读取一行数据 换行丢弃
cout << a << endl;
}
cin.ignore() //忽略
using namespace std;
int main() {
cin.ignore(); //忽略一个字符
char c = cin.get();
cout << c << endl;
cin.ignore(3); //忽略三个字符
c = cin.get();
cout << c << endl;
}
cin.peek() //偷窥
#include<iostream>
using namespace std;
int main() {
//输入ab 输出aa
char c = cin.peek(); //只看第一个字符 字符不拿走 依旧在缓冲区
cout << c << endl;
c = cin.peek();
cout << c << endl;
}
cin.putback() //放回
using namespace std;
int main() {
//输入hello 输出// h hello
char c = cin.get();
cout << c << endl;
cin.putback(c); //将读取的字符放回缓冲区
char buf[1024] = { 0 };
cin.getline(buf,1024);
cout << buf << endl;
}
3.案例
//判断用户输入的是字符串还是数字
void test06()
{
cout << "请输入一个字符串或数字" << endl;
char c=cin.peek(); //偷窥第一个输入的字符
if (c >= '0'&&c <= '9')
{
int num;
cin >> num;
cout << "输入的数字是:" << num << endl;
}
else
{
char buf[1024] = { 0 };
cin >> buf;
cout << "输入的字符串是:" <<buf << endl;
}
}
//0 :goodbit 无错误
//1 :Eofbit 已到达文件尾
//2:failbit 非致命的输入/输出错误,可挽回
//3:badbit 致命的输入/输出错误,无法挽回
//输入一个0到10的数字,直到输入正确为止
void test07()
{
int num;
while (1)
{
cin >> num;
if (num >= 0 && num <= 10)
{
cout << "输入正确" << endl;
break;
}
cout << "重新输入:" << endl;
//清楚错误的状态的flag 比如输入d 缺把d赋值给int这种整形 d仍然会留在缓冲区
cin.clear();
//2013清空缓冲区
cin.sync();
//2015 清空缓冲区
char buf[1024] = { 0 };
cin.getline(buf, 1024);
//打印标志位 当输入流读取失败时,它会把字符放回原处,等待下次读取;并且将 条件状态标识符 中failbit 置位 正确返回1 错误返回0
cout << cin.fail() << endl;
}
}
2.系统标准的输出流(重点)
1.通过成员函数格式化输出
void test01()
{
cout.put('c');
//链式编程
cout.put('a').put('b').put('c');
}
void test02()
{
char buf[] = "hello world";
cout.write(buf,strlen(buf));
}
//通过流的成员函数实现格式化的输出
void test03()
{
int num = 99;
cout.width(20);//设置宽度
cout.fill('*');//填充
cout.setf(ios::left);//让数据在左边
//变成十六进制
cout.unsetf(ios::dec);//卸载十进制
cout.setf(ios::hex);//安装十六进制
cout.setf(ios::showbase);//显示基数 美化十六进制
//变成八进制
cout.unsetf(ios::hex);//卸载十六进制
cout.setf(ios::oct);//安装八进制
cout << num << endl;
}
2.通过控制符格式化输出
//通过控制符来格式化输出,引入头文件iomanip
void test04()
{
int num = 99;
cout << setw(20);//设置宽度
cout << setfill('*');//填充
cout << setiosflags(ios::showbase);//显示基数
cout << setiosflags(ios::left);//让数据在左边
//不用卸载了
cout << hex;//六十进制
cout << oct;//八进制
cout << dec;//十进制
cout << num << endl;
}
3.打印浮点数后面的小数点
void test05()
{
double d = 20.22;
//设置显示浮点数 20.220000
cout << setiosflags(ios::fixed);
//显示小数点后10位
cout << setprecision(10);
cout << d << endl;
}
标签:cout,get,int,输入输出,cin,char,main
From: https://www.cnblogs.com/wbcde116/p/18021133