C++中std::setw()的用法解讀
C++中std::setw()用法
std::setw(n)的作用是設(shè)置輸出寬度為n,默認(rèn)為右對齊,并且用空格填充。
例如:
cout << std::setw(5) << "0" << "1" << endl,該語句就是設(shè)置字符串"0"的輸出寬度為5,默認(rèn)為右對齊,空格填充。
若想使用其他符號填充(例如用'*'填充),則可以用cout << std::setw(5) << setfill('*') << "0" << "1" << endl;
如果想修改成左對齊,則只需要在std::setw(n)之前加上std::left即可。
當(dāng)要輸出的字符串寬度大于setw設(shè)置的寬度n時,直接輸出想要輸出的字符串即可(此時忽視setw設(shè)置的寬度)。
通過運行如下測試代碼即可了解setw()的規(guī)則:
#include <iomanip> #include <iostream> #include<string.h> using namespace std; int main() { /*默認(rèn)為右對齊,此時加不加std::right都可以 */ cout << std::setw(5) << "0" << "1" << endl; cout << std::setw(5) << "00" << "1" << endl; cout << std::setw(5) << "000" << "1" << endl; /*用<<left或者std::left改成左對齊*/ cout << std::left << std::setw(5) << "0" << "1" << endl; cout << std::left << std::setw(5) << "00" << "1" << endl; cout << std::left << std::setw(5) << "000" << "1" << endl; /*當(dāng)要輸出的字符串寬度大于setw設(shè)置的寬度時,直接輸出想要輸出的字符串即可*/ cout << std::right <<std::setw(5) << "0000000" << "1" << endl; /*用其他符號填充*/ cout << std::right <<std::setw(5) << setfill('*') << "0" << "1" << endl; cout << std::left << std::setw(5) << setfill('*') << "0" << "1" << endl; return 0; }
代碼運行結(jié)果:
C++中setw()函數(shù)
定義
C++函setw的行為與在流上調(diào)用n作為參數(shù)的成員寬度一樣,它作為操縱器插入/提?。ㄔ谳斎肓骰蜉敵隽魃喜迦?提?。K糜谠O(shè)置要在輸出操作上使用的字段寬度。
頭文件
頭文件為#include < iomanip >
聲明
setw (int n);
參數(shù)
n 用作字段寬度的字符數(shù)。
返回值
它返回未指定(unspecified),此函數(shù)應(yīng)僅用作流操縱器。
示例
下面的例子說明了setw函數(shù)的用法。
(后面緊跟著的輸出字段長度小于n的時候,在該字段前面用空格補齊;當(dāng)輸出字段長度大于n時,全部整體輸出。)
#include <iostream> #include <iomanip> using namespace std; void main(){ cout << setw(10) << setiosflags(ios::left)<< 123 << endl; //聲明左對齊,后面補7個空格 cout << setw(10) << setiosflags(ios::right) << 123 << endl; //聲明右對齊,前面補7個空格 cout << setw(10) << setfill('*') << 123 << endl; //用*星號而不是空格,來補足10個位置 }
編譯和運行上面的程序,將產(chǎn)生以下結(jié)果 :
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- c++中std::placeholders的使用方法
- c++ std::sort使用自定義的比較函數(shù)排序方式
- C++中std::thread{}和std::thread()用法
- C++中std::tuple和std::pair的高級用法
- c++之std::get_time和std::put_time
- C++中std::ios_base::floatfield報錯已解決
- C++中std::invalid_argument報錯解決
- C++中std::ifstream::readsome和std::ifstream::read的區(qū)別解析
- C++中的std::funture和std::promise實例詳解
- C++中std::transform的使用小結(jié)
- C++?std::copy與memcpy區(qū)別小結(jié)
- C++實現(xiàn)std::set的示例項目
相關(guān)文章
全面了解結(jié)構(gòu)體、聯(lián)合體和枚舉類型
下面小編就為大家?guī)硪黄媪私饨Y(jié)構(gòu)體、聯(lián)合體和枚舉類型。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07詳解C語言中strcpy()函數(shù)與strncpy()函數(shù)的使用
這篇文章主要介紹了詳解C語言中strcpy()函數(shù)與strncpy()函數(shù)的使用,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-08-08