Зачем? Проблема не только в том, что это невозможно, но зачем? Ты пытаешься записать данные в строку std::string с помощью функции sprintf, которая предназначена для работы с массивами символов стиля C, в то время как std::string::c_str() возвращает константный указатель на символы строки, и ты не можешь изменить эти символы.
Единственное, что ты можешь - использовать snprintf. Оно позволяет записывать данные в массив символов с заданным размером. А далее ты можешь создать строку std::string из этого массива, правда я без понятия зачем. char buffer[50];
double speed_value = 10.23;
snprintf(buffer, sizeof(buffer), "%.1f", speed_value);
std::string speed_str = buffer; Если тебе нужен только объект std::string, то можно использовать потоки ввода-вывода C++, которые позволяют контролировать точность вывода. Правда, я опять же, реально не понимаю, зачем. #include
#include