栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++11 标准模板(STL)string(九)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++11 标准模板(STL)string(九)

string 操作
​​​后附字符到结尾 append  拷贝字符,copy
std::basic_string::append
1) 后附 count 个 ch 的副本
basic_string& append( size_type count, CharT ch );

调用示例 

    str.append(5, 'A');
    std::cout << "str append: " << str << std::endl << std::endl;
2) 后附 string str
basic_string& append( const basic_string& str );

调用示例

    // 后附 string str
    string str2 = "ABCDE GH";
    str.append(str2);
    std::cout << "str append: " << str << std::endl << std::endl;
3) 后附 str 的子串 [pos, pos+count) 。

若请求的子串越过 string 结尾,或若 count == npos ,则后附的子串为 [pos, size()) 。若 pos > str.size() ,则抛出 std::out_of_range 。

basic_string& append( const basic_string& str,
size_type pos, size_type count );

调用示例

    // 后附 str 的子串 [pos, pos+count) 。
    str = str1;
    str.append(str2, 0, 2);
    std::cout << "str append: " << str << std::endl << std::endl;
 4) 后附范围 [s, s + count) 中的字符。此范围能含有空字符。
basic_string& append( const CharT* s, size_type count );

调用示例

    // 后附范围 [s, s + count) 中的字符。此范围能含有空字符。
    str = str1;
    str.append(str2.c_str(), str2.size());
    std::cout << "str append: " << str << std::endl << std::endl;
 5) 后附 s 所指向的空终止字符串。由首个空字符用 Traits::length(s) 确定字符串的长度。
basic_string& append( const CharT* s );

调用示例

    // 后附 s 所指向的空终止字符串。由首个空字符用 Traits::length(s) 确定字符串的长度。
    str = str1;
    str.append(str2.c_str());
    std::cout << "str append: " << str << std::endl << std::endl;
 6) 后附范围 [first, last) 中的字符。

若 InputIt 为整数类型,则此重载与重载 (1) 拥有相同效果。

(C++11 前)

此重载仅若 InputIt 满足 遗留输入迭代器 (LegacyInputIterator) 的要求才参与重载决议。

(C++11 起)
template< class InputIt >
 basic_string& append( InputIt first, InputIt last );

 调用示例

    // 后附范围 [first, last) 中的字符。
    str = str1;
    str.append(str2.begin(), str2.begin() + 5);
    std::cout << "str append: " << str << std::endl << std::endl;
7) 后附来自 initializer_list ilist 的字符。
basic_string& append( std::initializer_list ilist );

调用示例

    // 后附来自 initializer_list ilist 的字符。
    str = str1;
    str.append({'A', 'B', 'C'});
    std::cout << "str append: " << str << std::endl << std::endl;
参数
count-要后附的字符数
pos-要后附的首个字符下标
ch-要后附的字符值
first, last-要后附的字符范围
str-要后附的 string
s-指向要后附的字符串的指针
ilist-拥有要后附的字符的 initializer_list
t-可转换为带要后附的字符的 std::basic_string_view 的对象
返回值

*this

复杂度

无标准复杂度保证,典型实现表现类似 std::vector::insert 。

异常

若因任何原因抛出异常,则此函数无效果(强异常保证)。 (C++11 起)

若操作会导致 size() > max_size() ,则抛出 std::length_error 。

调用示例
    string str = "abcdefg hijk";
    string str1 = str;

    // 后附字符到结尾
    // 后附 count 个 ch 的副本
    str.append(5, 'A');
    std::cout << "str append: " << str << std::endl << std::endl;

    // 后附 string str
    string str2 = "ABCDE GH";
    str.append(str2);
    std::cout << "str append: " << str << std::endl << std::endl;

    // 后附 str 的子串 [pos, pos+count) 。
    str = str1;
    str.append(str2, 0, 2);
    std::cout << "str append: " << str << std::endl << std::endl;

    // 后附范围 [s, s + count) 中的字符。此范围能含有空字符。
    str = str1;
    str.append(str2.c_str(), str2.size());
    std::cout << "str append: " << str << std::endl << std::endl;

    // 后附 s 所指向的空终止字符串。由首个空字符用 Traits::length(s) 确定字符串的长度。
    str = str1;
    str.append(str2.c_str());
    std::cout << "str append: " << str << std::endl << std::endl;

    // 后附范围 [first, last) 中的字符。
    str = str1;
    str.append(str2.begin(), str2.begin() + 5);
    std::cout << "str append: " << str << std::endl << std::endl;

    // 后附来自 initializer_list ilist 的字符。
    str = str1;
    str.append({'A', 'B', 'C'});
    std::cout << "str append: " << str << std::endl << std::endl;
复制字符
std::basic_string::copy
size_type copy( CharT* dest, size_type count, size_type pos = 0) const;

复制子串 [pos, pos+count) 到 dest 所指向的字符串。若请求的子串越过 string 结尾,或若 count == npos ,则复制的子串为 [pos, size()) 。产生的字符串不是空终止的。

若 pos > size() ,则抛出 std::out_of_range 。

参数
dest-指向目标字符串的指针
count-子串长度
pos-包含的首字符位置
返回值

复制的字符数

异常

若 pos > size() 则为 std::out_of_range 。

复杂度

与 count 成线性

调用示例
    // 复制字符
    char ch[16] = {};
    str.copy(ch, 10, 0);
    std::cout << "str copy: " << ch << std::endl << std::endl;
调用示例
    string str = "abcdefg hijk";
    string str1 = str;

    // 后附字符到结尾
    // 后附 count 个 ch 的副本
    str.append(5, 'A');
    std::cout << "str append: " << str << std::endl << std::endl;

    // 后附 string str
    string str2 = "ABCDE GH";
    str.append(str2);
    std::cout << "str append: " << str << std::endl << std::endl;

    // 后附 str 的子串 [pos, pos+count) 。
    str = str1;
    str.append(str2, 0, 2);
    std::cout << "str append: " << str << std::endl << std::endl;

    // 后附范围 [s, s + count) 中的字符。此范围能含有空字符。
    str = str1;
    str.append(str2.c_str(), str2.size());
    std::cout << "str append: " << str << std::endl << std::endl;

    // 后附 s 所指向的空终止字符串。由首个空字符用 Traits::length(s) 确定字符串的长度。
    str = str1;
    str.append(str2.c_str());
    std::cout << "str append: " << str << std::endl << std::endl;

    // 后附范围 [first, last) 中的字符。
    str = str1;
    str.append(str2.begin(), str2.begin() + 5);
    std::cout << "str append: " << str << std::endl << std::endl;

    // 后附来自 initializer_list ilist 的字符。
    str = str1;
    str.append({'A', 'B', 'C'});
    std::cout << "str append: " << str << std::endl << std::endl;

    // 复制字符
    char ch[16] = {};
    str.copy(ch, 10, 0);
    std::cout << "str copy: " << ch << std::endl << std::endl;
 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012904.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号