Как сказал Джеймс, используйте std::string
... за исключением того, что помните, что глобальный порядок строительства и разрушения между единицами перевода не определен.
Итак, если вы все еще хотите использовать char*
, используйте strcpy
(см. man strcpy
) и убедитесь, что buf
завершается NUL. strcpy скопирует buf
в пункт назначения X
.
char buf[256];
// ...
strcpy(X, buf);
Я должен добавить, что есть и другие причины для использования std::string
. При использовании strcpy
необходимо убедиться, что в буфере назначения (X
) достаточно памяти для приема исходного буфера. В этом случае 256 намного больше, чем strlen("test_1")
, поэтому у вас будут проблемы. Есть способы обойти это перераспределение X (например, X = new char[number_of_characters_needed]
). Или инициализируйте X
в массив символов 256 вместо char*
.
IIRC, strcpy
для статического определенного строкового литерала (например, char * X = "test_1") - неопределенное поведение ... Мораль этой истории ... Это C ++! Используйте std::string
! :)
(Вы сказали, что были новичком в c ++, поэтому, возможно, вы не слышали «неопределенное поведение», что означает, что компьютер может ударить вас по лицу ... обычно это означает, что ваша программа аварийно завершится)