c++ - 在 C++ 中连接 C 字符串的更优雅的方法?

标签 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;
}

最佳答案

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

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

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

关于c++ - 在 C++ 中连接 C 字符串的更优雅的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23258575/

相关文章:

ios - 为什么 RxSwift 与多个可观察量连接似乎不起作用?

c++ - 在 MFC 计算器应用程序中连接 CString 时遇到问题

c++ - 如何以更少的开销管理字符串切片?

c++ - 无法将 libcurl 链接到我正在进行的项目

c++ - 如何知道并加载特定文件夹中的所有图像?

c++ - 避免在 C++ 中使用 istream 的 eof

string - 连接 2 个列表以获取 (a,d,b,e,c,f) 而不是 (a,b,c,d,e,f)

c++ - 图像在本地主机上显示已损坏

python - 在 pandas 中转换、切片和连接列

c# - 将 CString 数组转换为 System::String