标准的输入和输出对象
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;
}
运行结果
其中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;
}
结果
fin
fin.ignore(256, '\n'); // 忽略文件中第1行的提示信息
默认情况下,fin总是从文件的开始部分进行读取的,为了直接读取第2行的内容,可以使用“fin.ignore(256,’\n’);”忽略第1行的内容,将读取位置跳转到第2行。然后,通过提取符“>>”将第2行用空格分割的三个数据分别提取并保存到三个变量中.
fout
为将数据写入文件,创建一个输出文件流的对象fout,然后通过它的构造函数或open()函数来打开一个文件,用插入符**<<**将数据插入fout对象