У меня есть это главный:как set.precision на нескольких переменных в одном соиЬ
Product newProduct;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
newProduct.display();
в Product.cpp у меня есть:
cout << "$" << basePrice << " - "
<< name << " - " << cout.precision(1) << weight << " lbs\n";
, но изменяя точность до (1) в .cpp также меняет basePrice на (1). Как изменить точность для разных переменных в одном и том же cout? есть ли способ? или я просто размещаю их в разных версиях cout? Будет ли это работать? Почему или почему нет?
Обновление Когда я пытаюсь выполнить второй cout, он добавляет номер 2 в конец моей переменной имени. Другими словами, я закончил первый cout после переменной name. Он работает, но добавляет номер 2 до конца.
Работал! так в чем разница между этими двумя функциями? –
'precision' - это функция-член' cout', а 'setprecision()' - так называемый объект манипулятора (хотя и функция). По-видимому, вы можете использовать последнее в потоке, в то время как первое нужно вызывать между вызовами 'operator <<'. Кроме того, последнее не возвращает значение, в отличие от первого. – iksemyonov
'setprecision' определенно возвращает что-то; в противном случае возникла бы проблема с использованием оператора '<<'. То, что оно возвращает, является объектом внутреннего типа библиотеки, для которого существует перегрузка оператора '<<'. Эта конкретная перегрузка задает точность потока и затем возвращает поток. – rici