std::basic_string<CharT,Traits,Allocator>::copy

From cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
Member functions
Element access
Iterators
Capacity
Modifiers
basic_string::copy
Search
Operations
Constants
Non-member functions
I/O
Comparison
(until C++20)(until C++20)(until C++20)(until C++20)(until C++20)(C++20)
Numeric conversions
(C++11)(C++11)(C++11)
(C++11)(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
Literals
Helper classes
Deduction guides (C++17)

 
size_type copy( CharT* dest, size_type count, size_type pos = 0 ) const;
(constexpr since C++20)

Copies a substring [pospos + count) to character string pointed to by dest. If the requested substring lasts past the end of the string, or if count == npos, the copied substring is [possize()).

The resulting character string is not null-terminated.

Parameters

dest - pointer to the destination character string
count - length of the substring
pos - position of the first character to include

Return value

Number of characters copied.

Exceptions

std::out_of_range if pos > size().

If an exception is thrown for any reason, this function has no effect (strong exception safety guarantee).

Complexity

Linear in count.

Example

#include <iostream>
#include <string>
 
int main()
{
    std::string foo("WINE");
 
    // brace-initialization initializes all characters to 0,
    // providing a null-terminator
    char bar[4]{};
 
    // do not copy the last char, to guarantee null-termination
    foo.copy(bar, sizeof bar - 1);
 
    std::cout << bar << '\n'; // requires bar to be null-terminated
}

Output:

WIN

Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 847 C++98 there was no exception safety guarantee added strong exception safety guarantee

See also

returns a substring
(public member function)
copies characters
(public member function of std::basic_string_view<CharT,Traits>)
copies a range of elements to a new location
(function template)
copies one buffer to another
(function)