Вопрос Можно ли как-то в sprintf передать не char[], а string массив? c++

Регистрация
7 Май 2013
Сообщения
67
Репутация
0
Спасибо
0
Монет
0
std::string speed_str;

double speed_value = 10.23;

sprintf(speed_str.c_str(), "%.1f", speed_value); Попробовал сделать с помощью .c_str(), но выходит ошибка:

аргумент типа "const char *" несовместим с параметром типа "char *"



Подскажите как сделать чтобы вместо массивов char можно было использовать string.

Метод to_string я не использую потому что там нельзя задать точность
 
Я в школе это не проходил
 
В C++ для этого есть ostringstream: #include
#include
#include

using namespace std;

int main() {
string speed_str;
double speed_value = 10.23;
speed_str = (ostringstream()
 
Зачем? Проблема не только в том, что это невозможно, но зачем? Ты пытаешься записать данные в строку 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

double speed_value = 10.23;
std::eek:stringstream stream;
stream
 
#include
#include
#include
using namespace std;
int main() {
string speed_str;
double speed_value = 10.23;
stringstream ss;
ss
 
Назад
Сверху