从char*复制到char[]
copy from char* to char[]
除了使用strcpy之外,还有其他方法可以从char*复制到char[]吗?我试过了,但不起作用。。对于前
char* t1 = "hello";
char t2[6];
t2 = t1;
它不是在编译。。表示将"char*"分配给char[6]的不兼容类型
感谢
使用strncpy:
strncpy(t2, t1, 6);
首先,您不能执行char* t1 = "hello";
;仅仅因为字符串文字是常量,任何通过t1
修改它们的尝试都会导致未定义的行为。
由于C++没有从常量字符指针到字符数组的赋值运算符,所以必须手动复制内存。memcpy
、memmove
、strcpy
或strncpy
是您的标准选项,您可以随时编写自己的(我不建议您这样做(。
您需要strcpy
。C++(一个C(中的数组有一个指向第一项(本例中为字符(的指针。
所以strcpy(t2, t1)
会起作用。
此外,作为一名囚犯,你需要const char * const t1 = "hello"
,但标准在这个问题上给予了很大的宽容
为了超级安全,您应该使用strncpy
来复制,使用strnlen
来获取字符串的长度,以某个MAX_length为界以防止缓冲区溢出。
char t2[MAX_LENGTH];
strncpy(t2, t1, strnlen(t1, MAX_LENGTH))
记住,t1
只是一个指针——一个指向内存中某个位置的数字,而不是一个实际的字符串。不能使用赋值运算符复制它。
在C++中,您还可以使用copy
:
#include <algorithm>
std::copy(t1, t1 + 6, t2);
char* t1 = "hello";
char t2[6];
memcpy(t2, t1, 6);
或
char* t1 = "hello";
char t2[6] = { t1[0], t1[1], t1[2], t1[3], t1[4], t1[5] };
相关文章:
- 使用strcpy将char数组的元素复制到另一个数组
- 使用动态分配将 char* 复制到另一个字符**
- 如何将 cv::Mat & Img 复制到未签名的 char* img?opencv
- 我可以使用istream_iterator将<char>一些 istream 内容复制到 std::string 中吗?
- char 和 char& 之间是否存在相对复制开销差异?
- 如何在忽略 null 的同时将数据从 char [] 复制到常量字符 *
- 如何将const char*复制到c 中的uint8_t []
- C - 从const char*复制到字符串
- 将矢量<char>复制到 2D 矢量 <string> c++
- C++将 char 复制到 char 数组(调试断言失败)时,字符串不是以 null 结尾的
- 将内存从char*复制到较大char*中的某个位置
- C++ 使用 char* 复制字符数组(无字符串库)
- 将 boost::array<char> 复制到 std::string
- 如何将char复制到char*向量中
- 将子字符串从char*复制到std::string的优雅方式
- 如何在c++中将数组char复制到字符串或int*(void*)中
- 方便地将 std::vector<unsigned char> 复制到输入流 (std::istream) 对象
- 从char*复制到char[]
- 将char复制到struct指针char
- 如何有效地将 std::vector<char> 复制到 std::string