c ++零基础可视化——字符串
c ++零基础可视化——字符串
string
定义:
string str1 = "012345"; // 012345
string str2 = str1; // 012345
string str3(6, '#'); // ######
string str4("012345"); // 012345
string str5(str1); // 012345
string str6(str1, 2); // 2345
string str7(str1, 2, 2); // 23
string str8("012345", 2); // 01
string str9({48, '1', '2'}); // 012
string str10(str1.begin() + 1, str1.end() - 1); // 1234
输入输出
string str;
cin >> str;
cout << str;
cin
输入以空格分隔,若想输入整行,则用getline(cin, str)
操作
一些不熟知的用法:
printf("%s", str.c_str());
在string中除了可以用迭代器表示位置外,还可以直接用下标表示,所以有:
string str = "abc";
str.insert(1, "def");
// adefbc
在string的erase中,如果不填入删除的个数,只填入删除的位置,则默认将这个位置开始的后续字符全部删除,这与vector是不同的,注意区分。如:
string str1 = "adefbc";
str1.erase(1, 2);
// afbc
string str2 = "abfc";
str2.erase(1);
// a
append可将字符串加入末尾
string str = "a";
str.append("??bc");
// a??bc
replace相当于erase和insert的结合
string str = "a??bc";
str.replace(1, 2, "xyz");
// axyzbc
find
找子串并返回第一次出现的位置,也可规定起点开始查找。如果找不到,则返回string::npos
string str = "This is island";
int pos = str.find("is");
-> 2
*******************************
string str = "This is island";
int pos = str.find("is", 3);
-> 5
*******************************
string str = "This is island";
int pos = str.find("That");
-> string::npos
substr(),参数包含开始下标和长度。如果不写长度,则返回开始下标到结尾的字串
string str = "hello";
string sub = str.substr(2, 3); // llo
string sub1 = str.substr(1); // ello
starts_with(),ends_with() 前缀判断,后缀判断
string str = "hello";
bool res = str.starts_with("hel");
-> true
bool res1 = str.ends_with("llo");
->true;
常用普通函数
1 | 2 |
---|---|
stoi() | 将字符串转为数字,类型为int |
stoll() | 将字符串转为数字,类型为long long |
stod() | 将字符串转为数字,类型为double |
to_string() | 将数字转为字符串,任意类型数字均可 |
format()可以构造string