第二十一章流 1流的操作

// 第二十一章流 1流的操作
// 1.1 缓冲
// 1.2 流和缓冲区
// 1.3 标准输入输出对像
// 1.4 重定向 重定向的意思是可以重新定向输出的设备
// 1.5 对像代表流
// 2.0 用count输出
/*#include <iostream>
using namespace std;
int main()
{
	char *ch = "hello world";
	//用强制转换方式将char*指针ch转换为void*之后,输出的就是字符串ch的地址,也就是第一个字符的位置
	cout<<(void*)ch<<endl;
	//输出的&ch则是指针ch的地址
	cout<<&ch<<endl;
}*/
// 2.2 清理缓冲区
// 2.3 有关输出的相关函数
   //ostring类除了提供各种类型的operator<<()函数外,还提供了put()和write()函数
   //put函数用于输出单个字符 write()函数用于输出字符
/*#include <iostream>
using namespace std;
int main()
{
	cout.put('h').put('e').put('l').put('p').put('\n');
	cout<<endl;
	char ch[] = "hello world";
	int length = strlen(ch); 
	cout.write(ch,length).put('\n').write(ch,length-6)<<endl;

    return 0;
}*/
//2.4 设置输出的字段宽度
/*
#include <iostream>
using namespace std;
int main()
{
	cout.width(20);//width()只影响将要显示的对像,然后字段宽度自动恢复为默认值
	cout<<"help"<<endl;
	cout<<"help\n";
	cout.width(1);
	cout<<"help"<<endl;
    return 0;
}*/
// 2.5 设置填充字段
/*#include <iostream>
using namespace std;
int main()
{
	cout.width(20);
	cout.fill('*'); //调用fill()方法来填充为其它字符合
	cout<<"help"<<endl;
	cout.fill(' ');
	cout.width(25);
	cout<<"help"<<endl;
    return 0;
}*/

// 2.6 设置浮点数的显示精度
/*#include <iostream>
using namespace std;
int main()
{
	//浮点数据默认精度为6到7位
    float pi = 3.1415926f;
	float p2 = 9876.622345f;
	cout<<pi<<endl;
	cout<<p2<<endl;
	cout<<"设置显示精度为15位"<<endl;
	cout.precision(15);
	cout<<pi<<endl;
	cout<<p2<<endl;
	cout<<"设置显示精度为3位"<<endl;
	cout.precision(3);
	cout<<pi<<endl;
	cout<<p2<<endl;
	return 0;
}*/

// 2.7 输出末尾的0_setf()
/*#include <iostream>
using namespace std;
int main()
{
	float price = 4.0f;
	cout.precision(6);
	cout.setf(ios_base::showpoint);//showpints指示是否显示点九,true为显示 false为不显示
	cout<<price<<endl;
	return 0;
}*/

// 2.8 设置标志
//cout.setf(ios::left);    按指定的宽度向左对齐
//cout.setf(ios::internal);符号左对齐,值右对齐
//count.setf(ios::right);  按指定的宽度向右对齐全
/*#include <iostream>
using namespace std;
int main()
{
	const float number = -185;
	cout.width(10);
	cout.setf(ios::internal);
	cout<<number<<endl;

	cout<<"计算15个标志的十进制值:"<<endl;
	cout<<"boolalpha:"<<ios::boolalpha<<endl;
	cout<<"fixed:"<<ios::fixed<<endl;
	cout<<"scientific:"<<ios::scientific<<endl;
	cout<<"hex:"<<ios::hex<<endl;
	cout<<"oct:"<<ios::oct<<endl;
	cout<<"dec:"<<ios::dec<<endl;
	cout<<"internal:"<<ios::internal<<endl;
	cout<<"right:"<<ios::right<<endl;
	cout<<"left:"<<ios::left<<endl;
	cout<<"showpos:"<<ios::showpos<<endl;
	cout<<"showpoint:"<<ios::showpoint<<endl;
	cout<<"showbase:"<<ios::showbase<<endl;
	cout<<"uppercase:"<<ios::uppercase<<endl;
	cout<<"unitbuf:"<<ios::unitbuf<<endl;
	//cout<<"skipws"<ios::skipws<<endl; 这个不知道为什么并没有开启
	cout<<endl;
    return 0;
}*/
/*
#include <iostream>
using namespace std;
int main()
{
   char ch[10];
   cin>>ch;
   cout<<ch;
   return 0;
}*/
/*
//setf()函数的返回值
#include <iostream>
using namespace std;
int main()
{
	int x;
	x = cout.setf(ios::left);
	cout<<x<<endl;
	x = cout.setf(ios::right);
	cout<<x<<endl;
	x = cout.setf(ios::internal);
	cout<<x<<endl;
	system("pause");
    return 0;
}*/
//标志设置不当出现的错误
/*#include <iostream>
using namespace std;
int main()
{
	const float number = -185;
	cout.width(10);
	cout.setf(ios::left);
	cout<<number<<endl;
	cout.width(10);
	cout.setf(ios::right);
	cout<<number<<endl;
	cout.width(10);
	cout.setf(ios::internal);
	cout<<number<<endl;
    return 0;
}*/

// 2.9 setf()函数原型
// 1 fmtflags setf(fmtflags)
// 2 fmtflags setf(fmtflags, fmtflags) 第二个参数则指定要清除的标志位,来统一管理这三个标志,这个常叫指示标志位,它的作用是恢复三个标志left,right internal为初始化状态
//ios::adjustfield
/*#include <iostream>
using namespace std;
int main()
{
	const float number = -185;
	cout.width(10);
	cout.setf(ios::left);
	cout<<number<<endl;
	cout.width(10);
	cout.setf(ios::right,ios::adjustfield);
	cout<<number<<endl;
	cout.width(10);
	cout.setf(ios::internal,ios::adjustfield);
	cout<<number<<endl;
    return 0;
}*/


// 2.10 所有15个标志以及3个指示标志
/*#include <iostream>
using namespace std;
int main()
{
	int x=185;
	cout.setf(ios::showpos);
	cout<<x<<endl;
	float y = 193.34f;
	cout.setf(ios::scientific);
	cout<<y<<endl;
	cout.unsetf(ios::showpos);
	cout<<x<<endl;
	cout.unsetf(ios::scientific);
	cout<<y<<endl;
    return 0;
}*/

// 2.11 unset()函数 可以实现标记位的清空,该函数的使用方法如下
/*
#include <iostream>
using namespace std;
int main()
{
	const float number = -185;
	cout.width(10);
	cout.setf(ios::left);
	cout<<number<<endl;
	cout.width(10);
	cout.unsetf(ios::adjustfield);
	cout.setf(ios::right);
	cout<<number<<endl;
	cout.width(10);
	cout.unsetf(ios::adjustfield);
	cout.setf(ios::internal);
	cout<<number<<endl;
    return 0;
}*/


// 2.12 标准控制器
// 标准控制器的使用
/*
#include <iostream>
using namespace std;
int main()
{
	const int x = 703710; 
	cout<<"x:"<<oct<<x<<endl; //八进制输出
	cout<<"x:"<<showbase<<x<<endl; //在八进制前添加0
	cout<<"x:"<<hex<<x<<endl;      //十六进制输出
	cout<<"x:"<<uppercase<<x<<endl;//用大写表示十六进制
	cout<<"x:"<<dec<<x<<endl;      //十进制输出
	cout<<"x:"<<showpos<<x<<endl;  //在正数前添车+号

	float y=3.56000f;
	cout.precision(0); //设置精度为0;
    cout<<"y:"<<scientific<<y<<endl; //以科学计数法输出浮点数
	cout.unsetf(ios::floatfield);
	cout<<"y:"<<showpoint<<y<<endl;
	//精度为0时输出浮点数的有效位数字(6或7位),精度不为0时输出该精度限制内的数字,这个精度指的是总精度,这两种情况均包括小数点
	cout.unsetf(ios::showpoint); //去掉小数点显示
	cout<<"y:"<<fixed<<y<<endl; //精度指的是小数点后的精度,也不包括小数点
	char str1[] = "abc";
	char str2[] = "abc";
	const char str3[] = "abc";
	const char str4[] = "abc";
	const char* str5 = "abc";
	const char* str6 = "abc";
	cout<<boolalpha<<(str1==str2) <<endl;
	//str1和str2都是字符数组,每个都有其自己的存储区,它们的值则是各存储区首地址,因此不相等

	cout<<boolalpha<<(str3==str4)<<endl;
	//str3和str4同上,只不过多了个const表示它们所指向的数据区不能修改因此不相

	cout<<boolalpha<<(str5==str6)<<endl;
	//str5和str6并非数组而是字符指针,并不分配存储区,str5和str6中的"abc"以常量形式存于存储取
	//也就是静态数据区,而它们自己仅是指向该区首地址的指针相
	//分别输出false false true

	cout.width(20);
	cout<<right<<y<<endl; 
	cout.width(20);
	cout<<left<<y<<endl;
	cout.width(20);
	cout<<internal<<y<<endl;

    return 0;
}*/

//2.13 iomanip头文件与标准控制符
//最常风的控制符分别是 setw() setfile() setprecision()0
/*#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
	float n=3.1456f;
	for(int i=0; i<5; i++)
	{
	    n = n*n;
		cout<<setw(6)<<setfill('.')<<i<<setfill(' ')<<setw(22)<<setprecision(2)<<fixed<<n<<endl;
	}
    return 0;
}*/

//showpoint标志的作用
/*
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
	float n=3.1456f;
	for(int i=0; i<5; i++)
	{
	    n = n*n;
		cout<<setw(6)<<setfill('.')<<i<<setfill(' ')<<setw(22)<<setprecision(2)<<showpoint<<n<<endl;
	}
    return 0;
}
*/

  

posted @ 2012-10-01 13:59  简单--生活  阅读(344)  评论(0编辑  收藏  举报
简单--生活(CSDN)