在C ++中连接C字符串的更优雅的方法是什么?

时间:2014-04-24 02:13:39

标签: c++ concatenation cstring strcpy strcat

我想知道是否有一个不那么糟糕的方法来做到这一点?我有一个将信用卡信息放在UDP数据包中的任务,信息在缓冲区中以冒号分隔,因此它看起来像Bob Jones:7845 6133 7889 4425:09/2017:654.99存储在单个字符数组中。

int main(int argc, char **argv)
{
    char buffer[256];
    char name[64];
    char cardNum[32];
    char expiration[8];
    char amount[14];

    while(true)
    {
        /*********
        (Input prompts go here, break if user types quit)
        *********/

        strcpy(buffer, amount);
        int length = strlen(buffer);
        buffer[length] = ':';
        strcat(buffer, cardNum);
        length = strlen(buffer);
        buffer[length] = ':';
        strcat(buffer, name);
        length = strlen(buffer);
        buffer[length] = ':';
        strcat(buffer, expiration);

        /***************
        (run all of the networking code)
        ***************/
    }

    return 0;
}

1 个答案:

答案 0 :(得分:2)

在C ++中,您可以使用std::string连接+个对象,或附加到string stream

在C和C ++中,您都可以访问格式化输出,我认为这是首选,因为整个代码整齐地适用于一行:

sprintf(buffer, "%s:%s:%s:%s", amount, cardNum, name, expiration);