std::basic_string<CharT,Traits,Allocator>:: copy
| Classes | ||||
| 
                
                 
                  
                   (C++17)
                  
                 
                
                | ||||
| 
 | 
 | 
 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
           
            size_type copy
            
             (
            
            CharT
            
             *
            
            dest, size_type count, size_type pos
            
             =
            
            
             0
            
            
             )
            
            
             const
            
            
             ;
            
           
           | (自 C++20 起为 constexpr) | |
       将子串
       
        
         [
        
        
         
          pos
         
        
        
         ,
        
        
         
          pos
          
           +
          
          count
         
        
        
         )
        
       
       复制到由
       
        
         dest
        
       
       指向的字符串中。若请求的子串超出字符串末尾,或当
       
        
         count
         
          ==
         
         npos
        
       
       时,被复制的子串为
       
        
         [
        
        
         
          pos
         
        
        
         ,
        
        
         
          size()
         
        
        
         )
        
       
       。
      
生成的字符串不以空字符结尾。
| 目录 | 
参数
| dest | - | 指向目标字符串的指针 | 
| count | - | 子字符串长度 | 
| pos | - | 起始字符位置 | 
返回值
已复制的字符数。
异常
若 pos > size ( ) 则抛出 std::out_of_range 异常。
若因任何原因抛出异常,此函数不产生任何效果( 强异常安全保证 )。
复杂度
在 count 上呈线性关系。
示例
#include <iostream> #include <string> int main() { std::string foo("WINE"); // 花括号初始化将所有字符初始化为0, // 提供空终止符 char bar[4]{}; // 不复制最后一个字符,确保空终止 foo.copy(bar, sizeof bar - 1); std::cout << bar << '\n'; // 要求bar以空字符结尾 }
输出:
WIN
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| DR | 适用范围 | 发布时的行为 | 正确行为 | 
|---|---|---|---|
| LWG 847 | C++98 | 未提供异常安全保证 | 增加了强异常安全保证 | 
参见
| 返回子字符串 (公开成员函数) | |
| 复制字符 ( 
           std::basic_string_view<CharT,Traits>
          的公开成员函数) | |
| 
           
            
            
            
             
              (C++11)
             
            
           
           | 复制元素范围到新位置 (函数模板) | 
| 复制缓冲区到另一个缓冲区 (函数) |