конкатенация — более элегантный способ объединения строк C в C ++?

Мне было интересно, если бы был менее …. простой способ сделать это? У меня есть назначение, которое помещает информацию о кредитной карте в пакет 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

Решение

В C ++ вы можете объединить std::string объекты, использующие +или добавить к струнный поток.

И в C, и в C ++ у вас есть доступ к форматированному выводу, который, я думаю, здесь предпочтительнее, потому что весь код аккуратно помещается в одну строку:

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

Другие решения


По вопросам рекламы [email protected]