簡體   English   中英

unsigned char *在C ++中加倍

[英]unsigned char* to double in c++

我通過以下方式將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

重要的是要注意,在構造std::string時無需分配, memcopy或以null終止。 這極大地簡化了您的代碼。

使用std::stod ,類似這樣:

#include <string>
double d = std::stod(cmdBody);
std::istringstream istream(std::string("3.14"));
double d;
istream >> d;
if (!istream.fail())
{
// convertion ok
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM