一、assign函数概述
string类中的assign函数可以将一个新的字符串分配给已有的字符串,或者将一个新的子字符串分配给已有的字符串。
assign函数的语法如下:
string& assign (const string& str);
string& assign (const string& str, size_t subpos, size_t sublen);
string& assign (const char* s, size_t n);
string& assign (const char* s);
string& assign (size_t n, char c);
二、将新字符串赋值给已有的字符串
可以使用assign函数将一个新的字符串赋值给已有的字符串,如下:
string str1 = "Hello";
string str2;
str2.assign(str1); //将str1赋值给str2
cout << str2 << endl;
输出结果为:
Hello
可以看到,将字符串str1赋值给了字符串str2,输出str2的值为"Hello"。
三、将新的子字符串赋值给已有的字符串
除了可以将一个完整的字符串赋值给已有的字符串,还可以使用assign函数将一个新的子字符串赋值给已有的字符串。
如下所示,将字符串str1的第2个字符开始的4个字符分配给字符串str2:
string str1 = "Hello";
string str2;
str2.assign(str1, 1, 4); //将str1的第2个字符开始的4个字符分配给str2
cout << str2 << endl;
输出结果为:
ello
可以看到,字符串str2的值为"ello",即为字符串str1的第2个字符开始的4个字符。
四、将字符数组或指针赋值给已有的字符串
除了可以将一个字符串或子字符串赋值给已有的字符串,还可以使用assign函数将一个字符数组或指针赋值给已有的字符串。
如下所示,将字符数组"Hello World"赋值给字符串str1:
char arr[12] = "Hello World";
string str1;
str1.assign(arr, 11); //将字符数组"Hello World"分配给str1
cout << str1 << endl;
输出结果为:
Hello World
可以看到,字符串str1的值为"Hello World",即为字符数组"Hello World"。
五、给已有字符串分配n个相同的字符
在assign函数中,还可以将n个相同的字符分配给已有的字符串。
如下所示,将3个'a'分配给字符串str1:
string str1;
str1.assign(3, 'a'); //给str1分配3个'a'
cout << str1 << endl;
输出结果为:
aaa
可以看到,字符串str1的值为"aaa",即为3个'a'。