3 回答
TA贡献1802条经验 获得超4个赞
setw()是设置域宽的函数,默认是前面加空格右对齐。
你的程序中的setw()丢了w,其他对着呢!细心检查就没有问题了!程序运行后名字左对齐占用8个字节不足在右边补空格;数据右对齐,占用10个字节不足左补空格
想要看到底是如何填充的只要把输出语句改一下就可以了:cout<<setiosflags(ios::left)<<setfill('.')<<setw(8)<<names[i]<<resetiosflags(ios::left)<<setfill('/')<<setw(10)<<salary[i]<<endl; 这样名字中空的部分填充的是‘.’,数值中空的部分填充的是‘/’,原来具体是如何在那里添加的空格就很清楚了!
运行结果如下:
王群平..//////1000
欧阳居成////600.34
张可..../////812.5
刘家星..////1345.2
朱江....////3345.1
(网页格式原因,可能页面上对不齐,上机试试,结果出来就明白了)
TA贡献1803条经验 获得超3个赞
首先。cout、endl和cin这两个输入输出换行函数是 类std 里面的函数。
所以,在写程序时,若已声明使用std类命名空间,即写有using namespace std语句,则在该命名空间内,cout和cin的使用是合法的。
当程序没有注明std类的命名空间时,即没有写using namespace std语句,则若想使用cout、endl和cin作输入输出换行,那么就得 以调用类std函数的形式 来调用cout、cin、endl函数,即声明有using std::cout、using std::endl等等 (如同楼组main函数前声明的using std::cout;using std::endl;)。
或者在没有写有using namespace std语句的情况下,同时也没有using std::cout,using std::endl等语句,在若仍然想使用cout、cin等函数,则书写格式为std::cout(例如:std::cout<<s1.length()<<','<<s2.length()<<std::endl)。
关于设置域宽函数setw(int),是在iomainp头文件下使用的,即include<iomainp>。
后话:关于using std::string本人表示不解,貌似std类里面没有string这个函数。如果楼主的意思是使用string头文件下的各种函数(例如:s1.length() ),那么include<string>已经声明了。
TA贡献1851条经验 获得超4个赞
也用using std::setw;就行啊
#include <iostream>
using std::cout;
using std::endl;
#include <iomanip>
using std::setw;
#include <cstring>
using std::strcpy;
using std::strcat;
添加回答
举报