我正在寫一個函數,它通過引用和字符數組以及數組的大小接收字符串。該字符串中已經有字符。我試圖擦除字符串中的字符並複製數組中的字符。 我試着設置一個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