Concatenate char[] and uint32_t in C++

Concatenate char[] and uint32_t in C++

本文关键字:in C++ uint32 and char Concatenate      更新时间:2023-10-16

我想与uint32_t串联char []以获取另一个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);

(如果您有using namespace std,则没有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);

第二种方法可以使用弦乐:

ostringstream oss;
oss << word << num;

结果可能是:

oss.str();

使用该库在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%dbn",r,g,b);
        SP->WriteData(word, n-1);
    }
    return 0;
}

sprintf_s返回要编写的缓冲区的长度,您可以将其用作写入函数的参数。

使用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);