【问题标题】:concatenate two integer values into a char array将两个整数值连接成一个 char 数组
【发布时间】:2012-06-30 14:12:13
【问题描述】:

我试图提取两个 (int32_t) 值,并将它们放在一个 char 数组中。

int32_t version = getVersion();

if (version < 0)
{
    return;
}
else
{
    //first part of number needs to be shifted right
    int32_t major = (((version) >>16) & 0xFFFF);
    int32_t minor = ((version) & 0xFFFF);

    // need to concatenate these two values, and place a "." between them

    setVersion(...);//requires a char array, should for example be "1.1"
}

谁能给我任何建议以最好的方式做到这一点?请不要使用 std::strings 。 我更喜欢 char 数组。

提前致谢

【问题讨论】:

  • 请显示预期的输入和输出。

标签: c++


【解决方案1】:

你可以雇佣strstream

char v[255] = {};
{
  std::strstream vs(v, 254);
  vs << major << '.' << minor;
}
setVersion(v);

【讨论】:

    【解决方案2】:

    这是另一种方法。

    snprintf(charArray, sizeof(charArray), "%d.%d", major, minor);
    
    // Please check the correctness for format specifier and verify the return 
    // value too.
    

    如果您在 Windows 平台上,请使用_snprintf_s

    【讨论】:

    • 看起来不错,我需要什么大小来制作 char 数组?当我提取这两个值时,加上“。”?
    • 就像在约翰内斯的回答中一样,您需要有一些默认大小,初始化为零。您可以使用一些逻辑计算主要、次要的位数,并动态设置charArray 的大小,以考虑主要+点+次要+空的大小。但这取决于您实施哪种方式。
    • 我会认为这是对 C 的好建议。但对于 C++,不正确类型的危险(并且不需要速度)将其视为有效用法。
    猜你喜欢
    • 2016-09-07
    • 1970-01-01
    • 2021-09-20
    • 2023-02-09
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    相关资源
    最近更新 更多