我通过以下方式将double值复制到unsigned char *中。
unsigned char* cmdBody;
double val = (double)-1;
std::ostringstream sstream;
sstream << val;
std::string valString = sstream.str();
unsigned int dataSize = valString.size() + 1;
cmdBody = (unsigned char*)malloc(dataSize);
memset(cmdBody, 0, dataSize);
memcpy(cmdBody, (unsigned char*)valString.c_str(), dataSize - 1);
cmdBody[dataSize - 1] = '\0';
从cmdBody我需要将值转换为double类型。怎么做?
最佳答案
多少钱?
如果仅使用std::string
,则解决方案非常简单:
const auto val = -1.0; // Input double
const auto cmdBody = std::to_string(val); // Convert double to a std::string
const auto foo = std::stod(cmdBody); // Convert std::string to a double
重要的是要注意,在构造
memcopy
时无需分配,std::string
或以null终止。这极大地简化了您的代码。