мой вопрос: этот метод гарантирует, что я не потеряю символы после нулевого элемента
Вся строка будет скопирована в буфер, даже если она содержит нулевые символы. std::copy
не интерпретирует данные, которые он копирует, он просто копирует количество элементов, которые вы ему сообщаете.
Однако, если строка содержит нулевые символы, вы не можете использовать ее с любой функцией, которая работает со строками с нулевым символом в конце (например, в <cstring>
); они будут интерпретировать первый нулевой символ как конец строки.
Кроме того, по крайней мере в опубликованном вами коде вы возвращаете указатель как const char *
, подразумевая, что вы не будете изменять копию. В этом случае вам действительно нужна копия данных строки, или этого достаточно, чтобы вместо нее вернуть str.c_str()
?
мой другой вопрос: я получаю эту ошибку компоновщика
Похоже, вам не хватает определения Parser::SaveStringToChar
. Я предполагаю, что код, который вы разместили, взят из исходного файла, а не функции, определенной внутри класса Parser
. Если это так, то вы забыли указать, что это функция-член, и вместо этого определили не-член; измените его на
void Parser::SaveStringToChar(string &mystring,const char * &ArrChar)
^^^^^^^^