我有一个名为os的ostream,我用这个:
os << rec.lastname << " " << rec.firstname << setw(30) << rec.phonenum;
输出显示如下:
WITT CANDACE 250-939-5404
PERKINS THEODORE 723-668-3397
HULL THAD 708-807-6757
SALAZAR STEPHAN 415-413-5058
WILKINS ISRAEL 938-701-1455
PERRY BRUCE 540-916-2956
RIVERS VALENTIN 726-204-2377
JOHNSTON WILFRED 582-126-8861
SPENCE LEVI 985-365-7415
NGUYEN KAYLA 484-322-1527
我知道之前已经多次询问过,但答案总是使用setw(),这在我的情况下不起作用。有什么想法吗?
答案 0 :(得分:4)
setw
会在输出流中添加空格数。如果你想排列colums,你需要减去先前stings的大小:
os << rec.lastname << " " << rec.firstname << setw(30 - rec.lastname.size() - rec.firstname.size()) << rec.phonenum;
答案 1 :(得分:0)
<< setw( 30 - rec.lastname.size() - rec.firstname.size() )
直到firstname和lastname的大小为&lt; 30.然后setw将收到负值,并将在姓氏
之后输出文本您可以评估记录值的最大长度,添加一些空格并使用此值进行对齐:
<< setw( start2ndColumnPosition - rec.lastname.size() - rec.firstname.size() );
但是,如果您确定在数据中可以离开30。
BTW:默认设置right调整