Я пытаюсь сделать квитанцию, и я хочу, чтобы «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, $, $)