不过这里我很想搞清楚还可以怎样申明setw()? 谢谢了

#include <iostream>
using std::cout;
using std::endl;
using std::string;
#include "iomanip"
#include <string>
int main()
{
string s1("hello"),s2("friend");
cout<<s1.length()<<','<<s2.length()<<endl;
if(s1>s2)
cout<<setw(10)<<s1<<","<<s2<<endl;
cout<<setw(17)<<s1+"&"+s2<<endl;
return 0;
}

运行的结果是error C2065: 'setw' : undeclared identifier。
如果把程序中的
using std::cout;
using std::endl;
using std::string;换成using namespace std;之后,程序运行结果就行了。又或者把程序里的setw(10)和setw(17)删掉之后,也行。

白猪掌柜的
浏览 86回答 3
3回答

慕沐林林

setw()是设置域宽的函数,默认是前面加空格右对齐。&nbsp;你的程序中的setw()丢了w,其他对着呢!细心检查就没有问题了!程序运行后名字左对齐占用8个字节不足在右边补空格;数据右对齐,占用10个字节不足左补空格&nbsp;想要看到底是如何填充的只要把输出语句改一下就可以了:cout<<setiosflags(ios::left)<<setfill('.')<<setw(8)<<names[i]<<resetiosflags(ios::left)<<setfill('/')<<setw(10)<<salary[i]<<endl; 这样名字中空的部分填充的是‘.’,数值中空的部分填充的是‘/’,原来具体是如何在那里添加的空格就很清楚了!运行结果如下:&nbsp;王群平..//////1000&nbsp;欧阳居成////600.34&nbsp;张可..../////812.5&nbsp;刘家星..////1345.2&nbsp;朱江....////3345.1&nbsp;(网页格式原因,可能页面上对不齐,上机试试,结果出来就明白了)

jeck猫

首先。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>已经声明了。

慕的地8271018

cout<<std::setw(10)<<s1<<","<<s2<<endl;cout<<std::setw(17)<<s1+"&"+s2<<endl;这两句这样就可以了
打开App,查看更多内容
随时随地看视频慕课网APP