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