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

时间:2017-03-07 00:59:48

标签: c++ arrays concat uint32

我想将一个char []与uint32_t连接起来,得到另一个char []作为结果:

ActiveSheet.ChartObjects("Chart 1").Chart.ChartTitle.Text = "my text edit"

目标是汇总一些数据,这些数据可以通过以下签名传递给描述为herechar word[] = "hi"; uint32_t = 33; char result[] = "hi33"; //How can I get this ??? 方法......

WriteData

5 个答案:

答案 0 :(得分:4)

你会这样做:

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

(如果您有std::

,则不包含using namespace std

理想情况下,您不会使用char[],因为没有理由。

如有必要,可以从string

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

删除const限定符可能很危险,但如果已知WriteData等方法是安全的(即不修改其参数的内容),则可以像这样调用< / p>

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

答案 1 :(得分:2)

在这种情况下你可以使用std :: string,但是当你去char []时你可以使用:

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

在使用字符串的情况下,您有几种方法: 第一种方式是:

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

第二种方式可以使用stringstream:

ostringstream oss;
oss << word << num;

结果可能是:

oss.str();

答案 2 :(得分:1)

使用std::ostringstream

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

答案 3 :(得分:1)

另一种选择是:

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

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

答案 4 :(得分:1)

要使用该库在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函数的参数。