2.2基本输入/输出流(iostream)

标准的输入和输出对象

iostream类库定义了4个最基本的输入/输出对象
cin:标准输入,即键盘输入
cout:标准输出,即屏幕输出
cerr:处理标准的错误,典型情况下用于生成警告或错误消息
clog:生成程序的执行信息
<<插入符, >>提取符
cout屏幕输出

cout<<1;        // 向输出对象中插入数值1
 cout<<"Hello World!";    // 向输出对象中插入字符串“Hello World!”
 cout<<"1 + 2 = "<<1+2;   // 向输出对象中插入字符串“1 + 2 =”以及1+2的计算结果
用cin提取键盘输入
// 定义两个变量用于保存用户输入数据的变量
int nAge; 
string strName; // 从输入对象cin中提取用户输入的整数数据和字符串数据,
// cin提取用户输入的信息分别保存到nAge和strName变量中
cin>>nAge>>strName;  

输入与输出配合使用示例:

#include "stdafx.h" // 引入定义输入/输出流对象的头文件
#include <iostream> // 引入std名字空间
using namespace std; 
int _tmain(int argc, _TCHAR* argv[])
 {     
 // 在屏幕上输出提示信息    
cout<< "请输入两个整数:" <<endl;     
int v1, v2;     // 从输入对象提取用户输入的整数    
cin>> v1 >> v2;     // 将计算结果输出到屏幕    
cout<< "两个整数" << v1 << "和" << v2 << "的和是" << v1 + v2 <<endl;     
return 0; 
  } 

运行结果
2.2基本输入/输出流(iostream)
其中endl是操纵符,输出换行符,并且刷新输出缓冲器,确保用户立即看到已经插入输出流的信息。

输出格式控制

为了控制输出流格式,C++提供了很多操纵符。这些操纵符可以直接插入输出流中以控制输出格式,它们都定义在头文件iomanip中,使用这些操纵符,需要先使用预编译指令#include引入这个头文件。
常用的输出流格式操纵符:

操纵符 作用
dec 采用十进制表示数值数据
hex 采用十六进制表示数值数据
oct 采用八进制表示数值数据
endl 插入换行符,并刷新流
setprecision(int) 设置浮点数的精度,精度是浮点数中所有包括小数点前后的十进制数字的个数
setw(int) 设置输出流中两个数据显示的间隔宽度
setioflags 输出流的默认对齐方式为文本右对齐,程序中可以用setiosflags和resetiosflags操纵符重设对齐方式

例1:要求显示浮点数1.23456小数点后两位有效数字,然后换行,可以用如下的语句cout<<fixed<<setprecision(2)<<1.23456<<endl;
首先向cout对象插入一个fixed操纵符,让它以普通的小数计数法输出,否则它将以科学计数法输出浮点数;然后,通过setprecision()设置需要保留的有效数字位数,这样就可以达到对输出格式的要求了。
例2:对字符串格式进行控制
格式控制转义字符:"\n"表示换行;"\t"表示间隔一个Tab的距离
换行显示:cout<<"分多行\n显示一个字符串"<<endl

读/写文件

头文件定义:ofstream和ifstream数据输出和输入

#include "stdafx.h" 
#include <iostream> 
// 引入输入/输出文件流对象需要的头文件
#include <fstream> 

using namespace std;
// 主函数
int _tmain(int argc, _TCHAR* argv[])
{
	int nYear, nMonth, nDate;	            // 定义变量,保存程序中的数据
	ifstream fin("Date.txt");               // 尝试打开Date.txt文件,并将其连接到输入文件流fin 
	if (!fin.bad())                         // 如果成功打开Date.txt文件,则从文件中读取内容 
	{      
		fin.ignore(256, '\n');              // 忽略文件中第1行的提示信息  
		fin >> nYear >> nMonth >> nDate;	// 用提取符“>>”从文件输入流fin中读取记录的数据,并保存到相应的变量         
		cout << "文件中的日期是" << nYear << "-" << nMonth << "-" << nDate << endl;	// 将数据显示到屏幕  
		fin.close();
	}
	else
	{
		cout << "无法打开文件并进行读取" << endl;
	}    
	cout<<"请输入当前日期(年月日):"<<endl;    // 提示用户输入新的数据并将其写入文件 
	cin>>nYear>>nMonth>>nDate;     // 从用户屏幕获取用户的键盘输入并保存到相应的变量中    
	ofstream fout("Date.txt");	   // 尝试打开文件Date.txt,并将其连接到输出文件流fout中         
	if (!fout.bad())               // 如果成功打开Date.txt文件,则将用户输入的数据写入文件
	{// 利用插入符“<<”将数据写入文件输出流fout中,也就是将数据写入文件中        
		fout<<"用户输入的当前日期是:\n" 
			<<nYear<<" "<<nMonth<<" "<<nDate;       //写入的内容    
		fout.close();  // 写入完成后,关闭文件   
	}    
	else     
	{         // 如果无法打开文件,则提示用户信息        
		cout<<"无法打开文件并进行写入"<<endl;    
	}    
	return 0; 
} 

结果2.2基本输入/输出流(iostream)

fin

fin.ignore(256, '\n'); // 忽略文件中第1行的提示信息默认情况下,fin总是从文件的开始部分进行读取的,为了直接读取第2行的内容,可以使用“fin.ignore(256,’\n’);”忽略第1行的内容,将读取位置跳转到第2行。然后,通过提取符“>>”将第2行用空格分割的三个数据分别提取并保存到三个变量中.

fout

为将数据写入文件,创建一个输出文件流的对象fout,然后通过它的构造函数或open()函数来打开一个文件,用插入符**<<**将数据插入fout对象

除上述读写,C++所提供的fstream还可以读/写二进制文件,甚至可以重新定义“<<”和“>>”,实现特殊的读/写操作。

上一篇:三次握手和四次挥手


下一篇:彻彻底底地理解TCP三次握手和四次挥手的全部过程