assign的使用

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

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的使用分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/64504.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注