IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c++ 11标准模板(STL)string (二) -> 正文阅读

[C++知识库]c++ 11标准模板(STL)string (二)

赋值字符给字符串?assign

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

1) 以 countch 的副本替换内容。

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<CharT> 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) 与 firstlast 间的距离成线性

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;

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-05 23:22:06  更:2022-07-05 23:23:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/12 9:20:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码