我正在写一个函数,它通过引用和字符数组以及数组的大小接收字符串。该字符串中已经有字符。我试图擦除字符串中的字符并复制数组中的字符。 我试着设置一个for循环来复制,但如果字符串太小或太大,它就不起作用。我不能在这个函数中使用strcopy。需要一些指导。如何将一个字符数组复制到一个字符串C++
void functionname(string &first, char arr[], int size) {
int i;
(for i = 0; i < size; i++) {
first[i] = arr[i];
}
}
对此不起作用的是什么?你有错误吗?他们是什么? – 0x499602D2 2014-10-30 02:42:56
FWIW,当'first'的传入值的'.size()'小于'size'参数时,你的代码是不可靠的。假设'first'是“abc”,'arr []'是VWXYZ并且大小是5 ...你将'VWX'复制到'abc'上 - 这是允许的 - 但是然后尝试将'Z'复制到' 4]'这是(C++ 11的)保证拿着一个NUL但不合法写入(对于C++ 03它可能不是一个NUL并且也是未定义的行为来写),然后当然编写最终的'Z'甚至超出了任何可能的NUL,甚至在C++ 11中,索引操作是未定义的行为,更不用说写入了...更多... – 2014-10-30 03:13:56