当你第一次用string的assign时,会发现有一点小区别,见以下代码:
string str1;
str1.assign("hello C++");
cout << str1 << endl;
string str2;
str2.assign(str1,5);
cout << str1 << endl;
string str3;
str3.assign("hello C++", 5);
cout << str3 << endl;
hello C++
C++
hello
可以看到str2输出是C++ ,而str3输出是hello,这是因为如果你使用的是一个已经存在的string 对象,后面跟的数字是开始复制的位置,这里str2将从str1的第5个位置开始复制,所以输出了C++(前面还有一个空格)。而如果源字符串是一个字符串字面量,后面跟的数字是复制前几个字符。这里str3就是复制了hello C++的前5个字符,输出了hello。
标签:const,string,C++,assign,hello,size From: https://blog.csdn.net/ZY52678/article/details/140710463assign(const basic_string& str);:接受一个 std::string 对象。
assign(const basic_string& str, size_type pos, size_type count = npos);:接受一个 std::string 对象,一个起始位置 pos,以及可选的字符数 count。
assign(const CharT* s, size_type n);:接受一个 C 风格字符串和一个字符数 n。