我正在尝试制作收据,并且总是希望“kg”在重量之后是一个空格,并且在“costperkg”和“totacost”之前也是“$”最初使用 setw 格式化输出,无法得到它工作,用ostringstream完成。我谁能解释为什么推双引号字符串不起作用?
这个不起作用:
int main()
{
string item = "A" ;
double weight = 2.00 ;
double costperkg = 1.98 ;
double totalcost = 3.96 ;
cout << fixed << showpoint << setprecision(2);
cout << setw(14) << left << "ITEM" << setw(16) << "WEIGHT" << setw(18) << "COST/kg"
<< setw(14) << "COST" << endl ;
cout << setw(14) << left << item << setw(16) << weight << "kg" << setw(18) << "$"
<< costperkg << setw(14) << "$" << totalcost << endl << endl ;
}
这个有效:
ostringstream streamweight, streamcostperkg, streamtotalcost;
streamweight << fixed << showpoint << setprecision(2) << weight ;
streamcostperkg << fixed << showpoint << setprecision(2) << costperkg ;
streamtotalcost << fixed << showpoint << setprecision(2) << totalcost ;
string strweight = streamweight.str() + " kg" ;
string strcostperkg = "$" + streamcostperkg.str() ;
string strtotalcost = "$" + streamtotalcost.str() ;
cout << setw(14) << left << item << setw(16) << strweight << setw(18) << strcostperkg
<< setw(14) << strtotalcost << endl << endl ;
预期的结果是:
ITEM WEIGHT COST/kg COST
A 2.0 kg $1.98 $3.96
我得到的是:
ITEM WEIGHT COST/kg COST
A 2.00 kg$ 1.98$ 3.96
为什么 setw 不起作用?并且对于那些在电话上查看的人来说,每个单词的第一个和第二个生命中的第一个字符应该与第一个字母对齐(A、2、$、$)