簡體   English   中英

在C ++中連接char []和uint32_t

[英]Concatenate char[] and uint32_t in C++

我想將char []與uint32_t連接起來,以得到另一個char []作為結果:

char word[] = "hi";
uint32_t = 33;

char result[] = "hi33"; //How can I get this ???

目標是使用以下簽名來組裝一些可以傳遞到此處描述的WriteData方法的數據。

bool WriteData(char *buffer, unsigned int nbChar);

您可以這樣做:

std::string word = "hi";
uint32_t num = 33;
std::string result = word + std::to_string(num);

(沒有std::如果您using namespace std

理想情況下,您不會使用char[]因為沒有理由這樣做。

如有必要,可以從char[]構造一個string

char word[] = "hi";
std::string result {word};

刪除const限定詞可能很危險,但是如果已知諸如WriteData的方法是安全的(即,不修改其參數的內容),則可以像這樣調用它

WriteData(const_cast<char *>(result.c_str()), result.length());

在這種情況下,您可以使用std :: string,但是當您使用char []時,可以使用:

sprintf( result, "%s%u", word, num );

在使用字符串的情況下,您有幾種方法:第一種方法是:

auto result = word + std::to_string(num);

第二種方法可以使用stringstream:

ostringstream oss;
oss << word << num;

結果可能是:

oss.str();

使用std::ostringstream

static const char word[] = "Elephant";
std::ostringstream stream;
stream << word << 33;
std::string text;
text = stream.str();

一種選擇是:

std::string word = "hi";   
std::uint32_t num = 33;

auto result = word + std::to_string(num);

要使用該庫在Arduino的串行端口中進行寫入,您應該執行以下操作:

int _tmain(int argc, _TCHAR* argv[]) {
    Serial* SP = new Serial("COM3");
    HDC dc = GetDC(NULL);
    char word[25];
    uint8_t n;
    uint32_t r, g, b;
    while (SP->IsConnected()) {
        n = sprintf_s(word,"%dr%dg%db\n",r,g,b);
        SP->WriteData(word, n-1);
    }
    return 0;
}

sprintf_s返回要寫入的緩沖區的長度,您可以將其用作WriteData函數的參數。

暫無
暫無

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

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