我是靠谱客的博主 苗条绿茶,最近开发中收集的这篇文章主要介绍assign的使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

assign:原字符串清空,赋予新的值作替换,返回类型为 string类型的引用。

一、常用重载如下:

a. string& assign ( const string& str );将str替换原字串的内容

举例:

string testassign = "Hello World";

testassign.assign("go home");

cout<<testassign<<endl;

//打印结果为 go home

 

b. string& assign ( const string& str, size_t pos, size_t n );将str的内容从位置pos起的n个字符作为原字串的新内容赋给原字串

string testassign = "Hello World";

testassign.assign("Come on!", 5, 2);

cout<<testassign<<endl;

//打印结果为 on

 

c. string& assign ( const char* s, size_t n );将字符数组或者字符串的首n个字符替换原字符串内容

举例:

string testassign = "Hello World";

testassign.assign("go back to China", 7);

cout<<testassign<<endl;

//打印结果为go back

 

d. string& assign ( const char* s );将字符串或者字符数组作为新内容替换原字串

举例:

string testassign = "Hello World";

char ch[20] = "go back to shanghai";

testassign.assign(ch);

cout<<testassign<<endl;

//打印结果为 go back to shanghai

 

e. string& assign ( size_t n, char c );将原字串替换为n个字符c

举例:

string testassign = "Hello World";

char ch = '?';

testassign.assign(5, ch);

cout<<testassign<<endl;

//打印结果为?????

 

f. template <class InputIterator>   string& assign ( InputIterator first, InputIterator last );

需要include <iterator>

举例:

string testassign = "Hello World";

testassign.assign(istream_iterator<char>(cin), istream_iterator<char>());

//输入abcde

cout<<testassign<<endl;

//打印结果为 abcde

二、使用assign(仅顺序容器)

赋值运算符要求左边和右边的运算对象具有相同的类型;

顺序容器(array除外)定义一个assign成员,允许我们从一个不同但相容的类型赋值,或者从容器的一个子序列赋值。assign操作用参数所指定的元素替换左边容器中的所有元素。

代码示例:

(1)   list<string>names;

      vector<const char*>oldstyle;

      names=oldstyle;//错误,容器类型不匹配;赋值操作无法完成

     names.assign(oldstyle.cbegin(),oldstyle.cend() );

   此段代码实现将names中的元素替换为迭代器指定的范围中的元素的拷贝,assign的参数决定了容器中将有多少个元素以及元素的值都是什么。

(2)  //等价于slist1.clear();

      //后跟slist1.insert(slist1.begin(),10,"hiya!");

      list<string>slist1(1);//一个元素,为空string

      slist1.assign(10,"hiya!"); //10个元素,每个元素都是"hiya!"

   此段代码是assign的第二个版本接受一个整型值和一个元素值,它用指定数目并且具有相同给定值的元素替换容器中原有的元素;

容器赋值运算

assign操作不适用于关联容器和array

seq.assign(b,e) //将seq中的元素替换为迭代器b和e所表示范围内的元素,迭代器b和e不能指向seq中的元素

seq.assign(il)    //将seq中的元素替换为初始化列表il中的元素

seq.assign(n,t)  //将seq中的元素替换为n个值为t的元素

最后

以上就是苗条绿茶为你收集整理的assign的使用的全部内容,希望文章能够帮你解决assign的使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部