C++中控制cout输出的函数——2.setw(int n)

简介

setw(int n)包含在<iomanip>头文件里,对紧随其后的cout输出生效,使用它将设置域宽为n位(即输出数据的宽度)。如果输出数据长度小于域宽,则数据默认右对齐,在长度不足的地方填充空格,可配合setfill(char c)使用,使用setfill(char c)时将设置默认填充字符为传入的参数c

示例代码

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
	int i=1024;
	cout<<i<<endl
		<<setw(8)<<i<<endl
		<<i<<endl
		<<setfill('0')<<setw(8)<<i<<endl
		<<setw(8)<<i<<endl
		<<i<<endl;

	cin.get();
	cin.get();

	return 0;
}

输出

1024
    1024
1024
00001024
00001024
1024    

从中可以看到,setfill(char c)的字符设置对之后的setw(int n)都生效,说明它的设置不是暂时性的。

相关链接

cplusplus.com(setw函数)

cplusplus.com(setfill函数)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include<iostream> #include<iomanip> #include<string> #include<fstream> using namespace std; const int Maxb=10000; //最多的图书 class Book//图书类 { private: int tag; //删除标记1:已删0:未删 int number; //ISBN书号 char name[20]; //书名 public: Book() {} int getnumber() { return number; } //获取ISBN书号 char *getname() { return name; } //获取姓名 int gettag() //获取删除标记 { return tag; } void delbook() //删除图书 { tag=1; } Void setname(char *na) //更改图书 { strcpy(name,na);} void addbook(int n,char *na) //增加图书 { tag=0; number=n; strcpy(name,na); } void disp() //输出图书 { cout<<setw(10)<<number<<setw(10)<<name<<endl; } }; //////////////////////////////////////////////////// class BDatabase //图书库类 { private: int top; //图书记录指针 Book book[Maxb]; //图书记录 public: BDatabase() //构造函数,将book.txt读到book[] { Book b; top=-1; fstream file("book.txt",ios::in); while (1) { file.read((char *)&b,sizeof(b)); if (!file) break; top++; book[top]=b; } file.close(); } int addbook(int n,char *na) //增加图书 { Book *p=search1(n); if (p==NULL) { top++; book[top].addbook(n,na); return 1; } return 0; } Book *search1(int bookid) //查找图书 { for (int i=0;i<=top;i++) if (book[i].getnumber()==bookid && book[i].gettag()==0) return &book[i]; return NULL; } void bookdata(); //图书库维护  void disp() { cout<<setw(10)<<"图书书号"<<setw(10)<<"图书名字"<<endl; for (int i=0;i<=top;i++) if (book[i].gettag()==0) book[i].disp(); } ~BDatabase() //析构函数,将book[]写入book.txt文件 { fstream file("book.txt",ios::out); for (int i=0;i<=top;i++) if (book[i].gettag()==0) file.write((char *)&book[i],sizeof(book[i])); file.close(); } }; void BDatabase::bookdata() { int choice; char bname[40]; int bookid; Book *b; while (choice!=0) { cout<<" 1 添加图书 "<<endl; cout<<" 2 删除图书 "<<endl; cout<<" 3 更改图书 "<<endl; cout<<" 4 图书查询 "<<endl; cout<<" 5 显示图书 "<<endl; cout<<" 0 退出 "<<endl; cout<<endl<<"请按键选择您需要的操作:"; cin>>choice; switch (choice) { case 1: cout <<"输入ISBN书号(一定为数字否则会异常):"; cin >> bookid; cout <<"输入书名:"; cin >> bname; addbook(bookid,bname); cout<<"添加成功"<<endl; break; case 2: cout << " 输入ISBN书号:"; cin >> bookid; b=search1(bookid); if (b==NULL) { cout<< "该图书不存在"<<endl; break; } b->delbook(); break; case 3: cout << " 输入ISBN书号:"; //按ISBN书号查询 cin >> bookid; b=search1(bookid); if (b==NULL) {cout<<"该图书不存在"<<endl; break; } cout << "输入新的图书名:"; cin >> bname; b->setname(bname); break; case 4: cout <<" 输入ISBN书号:"; //按ISBN书号查询 cin >> bookid; b=search1(bookid); if (b==NULL) { cout <<" 该图书不存在"<<endl; break; } b->disp(); break; case 5: disp(); break; } } }; void main() { BDatabase BookDB; BookDB.bookdata(); system("pause"); }
源代码: #include #include #include #include #define Smax 200 using namespace std; struct student { string num; string name; float eng; float math; float clang;//定义c++ float gete(){return eng;} float getm(){return math;} float getcl(){return clang;} string getn(){return num;} string getna(){return name;} int rank[3]; int row;//排名 int sinto(string,string,float,float,float);//输入数据 void sshow();//输出数据 float sall();// 求和 float save();//求平均 void objrank();//成绩分类 }; void shows()//普通函数 { cout<<setw(6)<<"排名"<<setw(6)<<"学号"<<setw(10)<<"姓名" <<setw(6)<<"英语"<<setw(6)<<"数学"<<setw(6)<<"c++" <<setw(6)<<"总分"<<setw(10)<<"平均分"<<endl; } int student::sinto(string a1,string a2,float b1,float b2,float b3 ) { num=a1;name=a2; eng=b1;math=b2;clang=b3; return 0; } void student::sshow()//输出 { cout<<setw(6)<<row<<setw(6)<<num<<setw(10)<<name<<setw(6) <<eng<<setw(6)<<math<<setw(6)<<clang<<setw(6)<<sall() <<setw(10)<<setiosflags(ios::fixed)<<setprecision(1)<<save()<<endl; cout<<setiosflags(ios::fixed)<<setprecision(0); } float student::sall()//求总分 { return eng+math+clang; } float student::save()//求平均分 {return sall()/3;} void student::objrank() { int n; rank[0]=(int)eng; rank[1]=(int)math; rank[2]=(int)clang; for(int i=0;i<3;i++) { n=rank[i]/10; switch(n) { case 9:n=1;break; case 8:n=2;break; case 7:n=3;break; case 6:n=4;break; default:n=5;} rank[i]=n; } } //类student结束 //类leo开始 class leo {private: student item[Smax]; int size; public: leo(); void lsize(int);//设置数组大小 void linit();//清空 void linsert();//添加 void ldelet(string);//删除 void lsearch(string);//查找 void lchan(string);//修改 void lpcent();//成绩分类 void lrow();//排序 void obave();//求平均 void lview();//显示全部数据 void lcin();//从磁盘输出 void lcout();//储存到磁盘 }; leo::leo() { student item[Smax]; lsize(0); } void leo::lsize(int i) {size=i; } void leo::linit() { lsize(0); cout<<"学生数据清除成功"<<endl;
图书信息管理系统 1. 设计目的: 为了锻炼计算机专业学生的编程能力,特别组织了这次软件实习,编程是一种抽象思维 ,必须要通过动手才能培养其能力,我们软件实习的主要目的是要求学生对所学的语言 熟练的掌握,并可以精通一门自己喜欢的编程语言,并且能把现实的问题抽象成程序, 用程序语言表现出来。 1.能根据实际问题的具体情况,结合面向对象的基本理论和基本技巧,正确分析问 题,并能设计出解决问题的有效算法与程序。 2.提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法和程序的正 确性。学会有效利用基本调试方法,迅速找出程序代码的错误并且修改,进一步提高 程序设计水平。 2. 设计要求: 图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试 设计一图书信息管理系统,使之能提供以下功能: 系统以菜单方式工作ϖ 图书信息录入功能(图书信息用文件保存)--输入ϖ 图书信息浏览功能--输出ϖ 查询和排序功能:(至少一种查询方式)--算法ϖ 按书名查询 按作者名查询 图书信息的删除与修改(可选项) 3. 流程图: 四、模块分析: (1)main()函数模块 主函数定义了一个database类的对象book2,通过这个对象调用bookdata(),主函数代码很 少,只是一个菜单首页。 int main() { database book2; cout<<endl<<endl<<"\t\t\t图 书 信 息 管 理 系 统"; cout<<endl<<endl; book2.bookdata(); return 0;} (2)添加图书信息模块 void addbook(int n,char *bn,char *an,char *ty,char *pub,char *ti,char *pr) //增加图书 { num=n; strcpy(bname,bn); //把输入的内容复制给bname strcpy(aname,an); strcpy(type,ty); strcpy(publish,pub); strcpy(time,ti); strcpy(price,pr);} 用户通过键盘输入图书基本信息(图书编号,书名,作者名,图书类型,出版日期, 出版单位,图书价格) (3)显示图书文件所有图书信息 void show() {cout<<setw(10)<<num<<setw(9)<<bname<<setw(9)<<aname<<setw(8)<<type<<setw(6) <<publish<<setw(20)<<time<<setw(9)<<price<<setw(5)<<endl; } void show() { for (int i=0;i<=top;i++) book1[i].show(); } (4)查询图书信息模块 book *find(int id) //查找图书 {for (int i=0;i<=top;i++) if (book1[i].getnum()==id) { return &book1[i];} } 五、程序的源代码(含注释): #include"iostream" #include "iomanip" #include "string" #include "fstream" /*输入/输出文件流类*/ using namespace std; const int max=5; /*数组5,图书添加五本*/ class book { private: int num; //图书编号 char bname[20]; //书名 char aname[20]; //作者名 char type[20]; //图书类型 char publish[20]; //出版单位 char time[20]; //出版时间 char price[20];//价格 public: void query(int m){}; int getnum() { return num;} char getbname() { return bname[20];} char getaname() { return aname[20];} char gettype() { return type[20];} char getpublish() { return publish[20]; } char gettime() { return time[20];} char getprice() {return price[20];} void addbook(int n,char *bn,char *an,char *ty,char *pub,char *ti,char *pr) //增加图书 { num=n; strcpy(bna

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值