3 回答

TA貢獻2016條經驗 獲得超9個贊
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貢獻1909條經驗 獲得超7個贊
首先。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貢獻1796條經驗 獲得超4個贊
cout<<std::setw(10)<<s1<<","<<s2<<endl;
cout<<std::setw(17)<<s1+"&"+s2<<endl;
這兩句這樣就可以了
- 3 回答
- 0 關注
- 156 瀏覽
添加回答
舉報