strncpy
работает с массивом символов и прекрасно работает как в C ++, так и в C.
Если вы используете strncpy
с массивом символов в C ++, и он не работает, возможно, это из-за какой-то ошибки в вашем коде C ++: покажите нам, если вам нужна помощь.
Если то, что вы ищете, это способ копирования строк (т.е.: std::string
), конструктор копирования или оператор присваивания сделает то, что вы ищете:
std::string a = "hello!";
Это скопирует всю строку без риска переполнения буфера. В любом случае, как говорит Джон Диблинг в комментариях, он не предоставляет такую же семантику strncpy
: он не позволяет указать, сколько символов нужно скопировать.
Если вам нужно скопировать до определенного количества символов, есть другие способы: std::string
предлагает конструктор, который копирует до n
символов, или вы можете использовать другие способы, предложенные в других ответах.