赞
踩
//字符串变量 string a="123"; string b="456"; 1.字符串直接赋值 a.assign(b); //等于a=b赋值,结果为 a="456" a.assign("789");//结果为 a="789" 2.一个字符串的子串赋值给另一个字符串 a.assign(b,begin,len); //从字符串b的第(begin)个字符开始向后数(len)个字符(包括begin)的字符串赋值给字符串a 例: a.assign(b,0,1); //结果为 a="4" a.assign(b,1,1); //结果为 a="5" a.assign(b,0,2); //结果为 a="45"; a.assign(b,1,2); //结果为 a="56"; a.assign("123456",1,3); //结果为 a="234"; /*说明 *如果第三个参数大于字符串本身的长度,则赋值到该字符串末尾 *如:a.assign(b,1,4); 结果为 a="56"; *如果第二个参数大于字符串本身长度则赋值为空 *如:a.assign(b,3,4); 结果为 a=""; *第二个参数最大不能超过字符串长度加一,否则程序会运行错误。因为string字符串后面会有一个"\n"符号,这个符号虽然不算在字符串长度里面,但是会占一个字符的空间。所以超过字符串长度加一后会出现std::out_of_range的错误。 */ 3.从字符串的某一个字符串开始到结束赋值给另一个字符串 a.assign(b,begin); //从字符串b的第begin字符串开始到字符串结束赋值给字符串a a.assign(b,0); //结果为 a="456"; a.assign(b,1); //结果为 a="56"; a.assign(b,4); //error 这样会运行错误(同2) vs2019 4.从字符串开始到字符串的某一个字符赋值给另一个字符串 a.assign("123456",2);//结果为 a="12" string c="123456"; a.assign(c,2); //结果为 a="3456" //根据vs2019运行情况来看,如过第一个参数是字符串常量则按从头到第n个字符赋值,如果第一个参数是字符串变量的话,则从第n个字符开始到字符串结尾赋值(不知道其他编译会是怎么样的,vs2019是调用不同的重载函数) 5.用相同的n个字符给字符串赋值 a.assign(10,'b'); //结果为 a="bbbbbbbbbb"; a.assign(5,'c'); //结果为 a="ccccc"; 6.template<class inputIterator> string& assign(inputIterator first,inputIterator last); //使用这个函数需要引入#include<iterator>头文件 a.assign(istream_iterator<char>(cin), istream_iterator<char>()); //键盘输入123abcd //结果为 a="123abcd"; /*注意 *该函数不接收空格换行等符号,最后(windows系统)按ctrl+z结束输入 *如输入以下符号(既有空格也有换行) 123abc ABC 哈哈 !@#$ defg)(-=<>-+/* 123654 最后结果为 a="123abcABC哈哈!@#$defg)(-=<>-+/*123654"; */ 7.使用迭代器赋值 a.assign(b.begin()+1,b.end()); //结果为 a="67"; a.assign(a.begin(),a.end()); //结果为 a="123";
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。