c++ char数组和char*

本文探讨了在C语言中如何处理数组与字符串的拷贝问题。通过具体示例介绍了如何使用内存拷贝函数来实现从一个较长的字符串向较短数组的拷贝过程,并展示了如何遍历和打印数组中的字符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果数组长,有多少复制多少,如果数组短,则数组填满为止

    char arr[2] = { 0 };

    int i;

    for (i = 0; i < sizeof(arr); i++) {

        printf("%c\n", arr[i]);

    }

    // 创建一个指针,并指向静态区存放的一个字符串“ABC

    char* tmp = "ABCDEF";

 

    // 利用字符串拷贝函数进行拷贝

    //strcpy(arr, tmp);

 

    // 例如内存拷贝函数进行拷贝

    memcpy(arr,tmp, sizeof(arr));

    //int i;

    for (i = 0; i < sizeof(arr); i++) {

        printf("%c\n", arr[i]);

    }


C++中,如果你想将多个字符串拼接到一起形成一个新的字符串,可以使用`char*`数组配合指针操作。但是,`char*`数组本质上是一个字符数组,并不是一个真正的字符串对象,所以通常会涉及到手动管理内存。以下是常见的做法: 1. **动态内存分配**: 使用`new[]`来创建一个足够大的临时数组来存放结果,然后逐个复制每个字符串的内容到这个新数组中,最后添加结束标志'\0'。 ```cpp char* strArray[3] = {"Hello", " ", "World"}; size_t totalLength = 0; for (const auto& s : strArray) { totalLength += strlen(s); } char* result = new char[totalLength + 1]; // +1 for null terminator result[0] = '\0'; // Initialize the result as an empty string size_t index = 0; for (const auto& s : strArray) { size_t len = strlen(s); memcpy(result + index, s, len); index += len; } result[index] = '\0'; // Add a null terminator after all strings are copied // Don't forget to clean up memory later with delete[] result; ``` 2. **C++11及以上版本:使用std::stringstd::accumulate** 如果你使用的是C++11或更高版本,可以考虑使用`std::string`容器`std::accumulate`函数,它们能更方便地完成任务,同时避免了内存管理问题。 ```cpp #include <string> #include <algorithm> std::string strArray[3] = {"Hello", " ", "World"}; std::string concatenatedResult = std::accumulate(strArray, strArray + 3, std::string{}, [](const std::string& a, const std::string& b) { return a + b; }); ``` 记得在不需要字符串时,删除动态分配的内存以防止内存泄漏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值