对C++ STL中的string的使用做了简单的整理。
-
调用、初始化与赋值
#include<string> #include<iostream> using namespace std; int main() { string s1 = "helloworld"; string s2(s1); //s2是s1的副本 string s3("value"); string s4(string("str")); string s5; s5 = s4; string s6 = string("string"); string s7; cin>>s7; string s8; getline(cin, s8);//读取一整行,包括空格,直到换行符停止 }
-
string转化为char*
const char* ptr1 = str.data() const char* ptr2 = str.c_str()
在C++98版本中,c_str()返回 const char* 类型,返回的字符串会以空字符结尾,data()返回 const char* 类型,返回的字符串不以空字符(null character)结尾;在C++11版本中,c_str()与data()用法相同。
-
字符串长度
str.length(); str.size();
-
字符串比较
str.compare();//如果两个string对象相等,返回0
-
判空
str.empty();//若为空,返回1
-
检索子字符串
str.find(substr); //substr可为char*或者string类型
可以指定查找的起始位置和长度:
size t find (const string&str,size_t pos 0)const; size_t find (const char*s,size_t pos 0)const; size_t find (const char*s,size_t pos,size_t n)const; size_t find (char c,size_t pos 0)const;
返回第一个匹配的第一个字符的位置。如果没有找到匹配,函数返回string::npos。
-
插入字符串
str1.insert(pos, str2);//在指定的pos位置插入字符串str2,str2可为char*和string
-
字符串拼接
可直接使用加号进行拼接
str1 = str1+str2;
-
访问字符元素
可以通过下标访问字符元素。
string str = "Hello"; string phrase = "world"; string s = str + ','+ phrase+ '\n'; cout << s ;
可以使用迭代器:
string s = "Hello world!"; for (auto i = s.begin(); i != s.end(); i++){ cout << *i << ","; } cout << endl;
也可以使用基于范围的for语句:
string str("some string"); for (auto c : str) cout << c << ","; cout << endl;*
-
构造子字符串
str.substr(pos,n)//从pos下标开始的n个字符
-
删除字符
str.erase(pos,n)//删除str从pos下标开始的n个字符
也可以传入迭代器或是开始迭代器和结束迭代器位置。
-
替代
str1.replace(pos,n,str2)//删除str1从pos下标开始的n个字符,在该位置插入str2 str1.replace(pos,n1,str2,n2)删除str1从pos下标开始的n1个字符,在该位置插入str2的前n2个字符
-
数值与字符串的转换
str = to_string(num);//转换数值为字符串
字符串转换为数字有stoi,stol,stoll,stod等,分别对应整型、长整型、长长整型和双精度类型的数据。