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

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

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

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

赋值字符给字符串 assign
std::basic_string::assign

1) 以 count 个 ch 的副本替换内容。

basic_string& assign( size_type count, CharT ch );

2) 以 str 的副本替换内容。等价于 *this = str; 。特别是可以发生分配器传播。

basic_string& assign( const basic_string& str );

3) 以 str 的子串 [pos, pos+count) 替换内容。若请求的子串越过 string 尾,或若 count == npos ,则产生的子串是 [pos, str.size()) 。若 pos > str.size() ,则抛出 std::out_of_range 。

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

 4) 用移动语义以 str 的内容替换内容。等价于 *this = std::move(str) 。特别是可以发生分配器传播。

basic_string& assign( basic_string&& str );

5) 以范围 [s, s+count) 中的字符的副本替换内容。此范围能含空字符。

basic_string& assign( const CharT* s, size_type count );

6) 以 s 所指向的空终止字符串的内容替换内容。由首个空字符,用 Traits::length(s) 确定字符串长度。

basic_string& assign( const CharT* s );

7) 以范围 [first, last) 中的字符的副本替换内容。若 InputIt 不满足遗留输入迭代器 (LegacyInputIterator) ,则此重载不参与重载决议。 (C++11 起)

template< class InputIt >
 basic_string& assign( InputIt first, InputIt last );

 8) 以 initializer_list ilist 的内容替换内容。

basic_string& assign( std::initializer_list ilist );
参数
count-产生的 string 大小
pos-要取的首字符下标
ch-用以初始化字符串的字符的值
first, last-复制字符来源的范围
str-用作源以初始化字符的 string
s-指向用作源初始化 string 字符串的指针
ilist-用以初始化 string 字符的 std::initializer_list
类型要求
- InputIt 必须满足遗留输入迭代器 (LegacyInputIterator) 的要求。
 返回值

*this

复杂度

1) 与 count 成线性

2) 与 str 的大小成线性

3) 与 count 成线性

4) 常数。若给定 alloc 且 alloc != other.get_allocator() ,则为线性。

5) 与 count 成线性

6) 与 s 的大小成线性

7) 与 first 和 last 间的距离成线性

8) 与 ilist 的大小成线性

异常

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

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

调用示例
    string str = "abcdefg hijk";
    std::cout << "str: " << str << std::endl;

    // 以 count 个 ch 的副本替换内容。
    string str1(str);
    str1.assign(3, 'c');
    std::cout << "str1: " << str1 << std::endl;

    // 以 str 的副本替换内容。等价于 *this = str
    string str2(str);
    str2.assign(str1);
    std::cout << "str2: " << str2 << std::endl;

    // 以 str 的子串 [pos, pos+count) 替换内容
    string str3;
    str3.assign(str, 2, 5);
    std::cout << "str3: " << str3 << std::endl;

    // 用移动语义以 str 的内容替换内容
    string str4;
    str4.assign(string("abcdef"));
    std::cout << "str4: " << str4 << std::endl;

    // 以范围 [s, s+count) 中的字符的副本替换内容。此范围能含空字符
    string str5;
    str5.assign(str.c_str(), 5);
    std::cout << "str5: " << str5 << std::endl;

    //  以 s 所指向的空终止字符串的内容替换内容
    string str6;
    str6.assign(str.c_str());
    std::cout << "str6: " << str6 << std::endl;

    //  以范围 [first, last) 中的字符的副本替换内容
    string str7;
    str7.assign(str.begin(), str.end());
    std::cout << "str7: " << str7 << std::endl;

    string str8;
    str8.assign({'a', 'b', 'c', 'd', 'e'});
    std::cout << "str8: " << str8 << std::endl;

 

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

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

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