On this page
std::basic_string<CharT,Traits,Allocator>::copy
|
(until C++20) | |
|
(since C++20) |
Copies a substring [pos, pos + 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 [pos, size()).
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>) |
|
|
(C++11)
|
copies a range of elements to a new location (function template) |
| copies one buffer to another (function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/basic_string/copy