-
operator+=
:这个操作符允许你将另一个字符串或者单个字符追加到当前字符串的末尾。比如,如果有一个字符串str
,使用str += "app";
会将"app"
追加到str
的末尾。
// string::operator+=
#include <iostream>
#include <string>
int main ()
{
std::string name ("John");
std::string family ("Smith");
name += " K. "; // c-string
name += family; // string
name += '\n'; // character
std::cout << name;
return 0;
}//John K. Smith
-
append
:这个方法用于将另一个字符串或者字符串的一部分追加到当前字符串的末尾。你可以指定要追加的字符串,以及可选的起始位置和长度。
// appending to string
#include <iostream>
#include <string>
int main ()
{
std::string str;
std::string str2="Writing ";
std::string str3="print 10 and then 5 more";
// used in the same order as described above:
str.append(str2); // "Writing "
str.append(str3,6,3); // "10 "
str.append("dots are cool",5); // "dots "
str.append("here: "); // "here: "
str.append(10u,'.'); // ".........."
str.append(str3.begin()+8,str3.end()); // " and then 5 more"
str.append(5,0x2E); // "....."
std::cout << str << '\n';
return 0;
}//Writing 10 dots here: .......... and then 5 more.....
-
str.append(str2);
将str2
的内容 "Writing " 追加到str
的末尾。
-
str.append(str3,6,3);
从str3
的第6个字符(“print” 的 ‘p’)开始,追加3个字符("10 ")到str
的末尾。 -
str.append("dots are cool",5);
追加字符串 "dots "(“dots are cool” 的前5个字符)到str
的末尾。 -
str.append("here: ");
追加字符串 "here: " 到str
的末尾。 -
str.append(10u,'.');
追加10个点字符(‘.’)到str
的末尾。(这里的u
表示 “unsigned”,即无符号的.u
后缀并不是必需的) -
str.append(str3.begin()+8,str3.end());
从str3
的第8个字符(“and then” 的 ‘a’)开始,追加到str3
的末尾,即 " and then 5 more"。 -
str.append(5,0x2E);
追加5个字符,字符的ASCII码为0x2E(即点字符 ‘.’)。
-
push_back
:这个方法用于在字符串的末尾追加一个字符。这相当于在字符串的末尾“推入”一个字符。
// string::push_back
#include <iostream>
#include <fstream>
#include <string>
int main ()
{
std::string myString = "Hello";
// 使用 push_back 在字符串末尾追加字符
myString.push_back(' '); // 追加一个空格
myString.push_back('W'); // 追加字符 'W'
myString.push_back('o'); // 追加字符 'o'
myString.push_back('r'); // 追加字符 'r'
myString.push_back('l'); // 追加字符 'l'
myString.push_back('d'); // 追加字符 'd'
// 输出追加后的字符串
std::cout << myString << std::endl; // 输出 "Hello World"
return 0;
}
-
assign
:这个方法用于将新的内容赋值给字符串,这会替换掉字符串当前的内容。你可以指定一个新的字符串或者字符串的一部分来赋值。
// string::assign
#include <iostream>
#include <string>
int main ()
{
std::string str;
std::string base="The quick brown fox jumps over a lazy dog.";
// used in the same order as described above:
str.assign(base);
std::cout << str << '\n';
str.assign(base,10,9);
std::cout << str << '\n'; // "brown fox"
str.assign("pangrams are cool",7);
std::cout << str << '\n'; // "pangram"
str.assign("c-string");
std::cout << str << '\n'; // "c-string"
str.assign(10,'*');
std::cout << str << '\n'; // "**********"
str.assign(10,0x2D);
std::cout << str << '\n'; // "----------"
str.assign(base.begin()+16,base.end()-12);
std::cout << str << '\n'; // "fox jumps over"
return 0;
}
-
str.assign(base);
将base
的全部内容赋值给str
。 -
str.assign(base,10,9);
从base
的第10个字符开始,赋值9个字符给str
,即 “brown fox”。当你指定起始位置和字符数量时,赋值操作是从起始位置索引之后的字符开始的,直到指定的字符数量结束。
-
str.assign("pangrams are cool",7);
将字符串 “pangrams are cool” 的前7个字符赋值给str
,即 “pangram”。 -
str.assign("c-string");
将字符串 “c-string” 赋值给str
。 -
str.assign(10,'*');
赋值10个星号(‘*’)给str
。 -
str.assign(10,0x2D);
赋值10个字符,字符的ASCII码为0x2D(即破折号 ‘-’)给str
。 -
str.assign(base.begin()+16,base.end()-12);
从base
的第16个字符开始,到结束前12个字符结束,赋值给str
,即 “fox jumps over”。
-
insert
:这个方法用于在字符串的指定位置插入一个新的字符串或者字符。你可以指定插入的位置,以及要插入的字符串或字符。
// inserting into a string
#include <iostream>
#include <string>
int main ()
{
std::string str="to be question";
std::string str2="the ";
std::string str3="or not to be";
std::string::iterator it;
// used in the same order as described above:
str.insert(6,str2); // to be (the )question
str.insert(6,str3,3,4); // to be (not )the question
str.insert(10,"that is cool",8); // to be not (that is )the question
str.insert(10,"to be "); // to be not (to be )that is the question
str.insert(15,1,':'); // to be not to be(:) that is the question
it = str.insert(str.begin()+5,','); // to be(,) not to be: that is the question
str.insert (str.end(),3,'.'); // to be, not to be: that is the question(...)
str.insert (it+2,str3.begin(),str3.begin()+3); // (or )
std::cout << str << '\n';
return 0;
}
-
str.insert(6, str2);
在str
的第 7 个位置(索引 6)插入str2
的内容 "the ",结果是 “to be the question”。 -
str.insert(6, str3, 3, 4);
从str3
的第 4 个字符("not ")开始,插入 4 个字符到str
的第 7 个位置,结果是 “to be not the question”。 -
str.insert(10, "that is cool", 8);
插入字符串 "that is "(“that is cool” 的前 8 个字符)到str
的第 11 个位置,结果是 “to be not that is the question”。 -
str.insert(10, "to be ");
插入字符串 "to be " 到str
的第 11 个位置,结果是 “to be not to be that is the question”。 -
str.insert(15, 1, ':');
在str
的第 16 个位置插入 1 个冒号字符 ‘:’,结果是 “to be not to be: that is the question”。 -
it = str.insert(str.begin()+5, ',');
在str
的第 6 个位置插入一个逗号 ‘,’,并将迭代器it
设置为插入位置的下一个位置,结果是 “to be, not to be: that is the question”。 -
str.insert(str.end(), 3, '.');
在str
的末尾插入 3 个点字符 ‘.’,结果是 “to be, not to be: that is the question…”。 -
str.insert(it+2, str3.begin(), str3.begin()+3);
在迭代器it+2
指向的位置(即 ‘e’ 后面)插入str3
的前 3 个字符 "or ",结果是 “to be, not to be: that is the question…(or )”。
-
erase
:这个方法用于删除字符串中的一部分。你可以指定要删除的起始位置和长度,或者只删除一个字符。
// string::erase
#include <iostream>
#include <string>
int main ()
{
std::string str ("This is an example sentence.");
std::cout << str << '\n';
// "This is an example sentence."
str.erase (10,8); // ^^^^^^^^
std::cout << str << '\n';
// "This is an sentence."
str.erase (str.begin()+9); // ^
std::cout << str << '\n';
// "This is a sentence."
str.erase (str.begin()+5, str.end()-9); // ^^^^^
std::cout << str << '\n';
// "This sentence."
return 0;
}
-
replace
:这个方法用于替换字符串中的一部分。你可以指定要替换的起始位置、长度,以及新的字符串来替换旧的部分。
// 在字符串中替换
#include <iostream>
#include <string>
int main ()
{
std::string base="this is a test string.";
std::string str2="n example";
std::string str3="sample phrase";
std::string str4="useful.";
// replace signatures used in the same order as described above:
std::string str=base; // "this is a test string."
str.replace(9,5,str2); // "this is an example string." (1)
str.replace(19,6,str3,7,6); // "this is an example phrase." (2)
str.replace(8,10,"just a"); // "this is just a phrase." (3)
str.replace(8,6,"a shorty",7); // "this is a short phrase." (4)
str.replace(22,1,3,'!'); // "this is a short phrase!!!" (5)
str.replace(str.begin(),str.end()-3,str3); // "sample phrase!!!" (1)
str.replace(str.begin(),str.begin()+6,"replace"); // "replace phrase!!!" (3)
str.replace(str.begin()+8,str.begin()+14,"is coolness",7); // "replace is cool!!!" (4)
str.replace(str.begin()+12,str.end()-4,4,'o'); // "replace is cooool!!!" (5)
str.replace(str.begin()+11,str.end(),str4.begin(),str4.end());// "replace is useful." (6)
std::cout << str << '\n';
return 0;
}
-
swap
:这个方法用于交换两个字符串的内容。你可以传递另一个字符串对象,两个字符串的内容会互相交换。
// swap strings
#include <iostream>
#include <string>
int main ()
{
std::string buyer ("money");
std::string seller ("goods");
seller.swap (buyer);
std::cout << " After the swap, buyer has " << buyer;
std::cout << " and seller has " << seller << '\n';
return 0;
}
-
pop_back
:这个方法用于删除字符串的最后一个字符。这相当于从字符串的末尾“弹出”一个字符。
// string::pop_back
#include <iostream>
#include <string>
int main ()
{
std::string str ("hello world!");
str.pop_back();
std::cout << str << '\n';
return 0;
}