C++ string类_#include

#include <iostream>
#include <string> //导入类,同时必须使用 using namespace std;
//这个类是窄字节的
using namespace std;

int main ()
{
string str1 = "Hello 李明";
string str2 = "World";
string str3;
string s();
string s1("liming");
string s3(4, 'K'); // s3 = "KKKK"

int len ;

str3 = str1; // 复制 str1 到 str3
//传值
len = str1.size(); //返回字符串的字节数

string s2("12345", 1, 3); //提取子串
//从序号1开始,提取3个字节
s2.assign("abcde", 2, 3); //提取子串
s2.assign(4, 'K'); // s2 = "KKKK"
str3 = str1 + str2; //字符串连接
s2+=str1; //字符串连接
s2="abcdefgh";
s1="lm";
//s1.append(s2); //在s1的尾部追加s2
//s1.append(s2, 1, 2); // s1 = "lmbc"
s1.append(3, 'K'); //s1 = "lmKKK"

//可以用 <、<=、==、!=、>=、> 运算符比较 string 对象
s1="liming";
s2="liMing lm";
int n = s1.compare(s2); //字符串比较
//比较的是ASCii吗
//小于 0 表示s1小;等于 0 表示两个字符串相等;大于 0 表示s2小

s1 = "this is ok";
s2 = s1.substr(2, 4); //返回子串
//从序号2开始取4个字节
s2 = s1.substr(2); //返回子串
//序号2开始到结尾
s1.swap(s2);// 交换两个字符串的内容

s1="wo is liming isLM";
n=s1.find('s',5); //查找字符第一个的位置--序号
//如果查不到,则返回 string::npos
//参数2--可选:开始查找的位置
//从前往后查
n=s1.find("is",1); //查找字符串第一个的位置--序号
//如果查不到,则返回 string::npos
//参数2--可选:开始查找的位置
//从前往后查

n=s1.rfind('s',10);//查找字符第一个的位置--序号
//从后往前找
//如果查不到,则返回 string::npos
//参数2--可选:开始查找的位置

n=s1.rfind("is",10);//查找字符串第一个的位置--序号
//从后往前找
//如果查不到,则返回 string::npos
//参数2--可选:开始查找的位置

n=s1.find_first_of("is",5);//查找s1中第一次出现"is"中任一字符的位置
//如果查不到,则返回 string::npos
//参数2--可选:开始查找的位置
//从前往后查

n=s1.find_last_of("is",15); //查找s1中第一次出现"is"中任一字符的位置
//如果查不到,则返回 string::npos
//参数2--可选:开始查找的位置
//从后往前找

n=s1.find_first_not_of("is",5); //查找s1中没有出现"is"中任一字符的位置
//如果查不到,则返回 string::npos
//参数2--可选:开始查找的位置
//从前往后查

n=s1.find_last_not_of("is",5);//找s1中没有出现"is"中任一字符的位置
//如果查不到,则返回 string::npos
//参数2--可选:开始查找的位置
//从后往前查找

s1="Real Steel";
s1.replace(1, 3, "123456", 2, 4); //用 "123456" 的子串(2,4) 替换 s1 的子串(1,3)
s1="Harry Potter";
s1.replace(2, 3, 5, '0'); //用 5 个 '0' 替换子串(2,3)
s1="Real Steel";
s1.replace(3, 5, "XXX"); //将子串(3,5)替换为"XXX"

s1="Real Steel";
s1.erase(1, 3); //删除子串(1, 3),此后 s1 = "R Steel"
s1="Real-Steel";
s1.erase(5); //删除下标5及其后面的所有字符,此后 s1 = "Real-"

s1="liming";
s2="1234";
s1.insert(2, "123"); //在下标2处插入字符串"123",s1 = "li123ming"
s1="liming";
s1.insert(2, s2); //在下标2处插入 s2 , s1 = "li1234ming"
s1="liming";
s1.insert(2, 5, 'X'); //在下标2处插入 5个'X',s1 = "lixxxxxming"



cout << s1<<endl;

return 0;
}
string s = "liming";
s[2] = 'M'; //修改某个字符
cout << s;
#include <iostream>
#include <string>
using namespace std;
#include <sstream>

int main ()
{
//使用流对象 istringstream 和 ostringstream,可以将 string 对象当作一个流进行输入输出。使用这两个类需要包含头文件 sstream
string src("Avatar 123 5.2 Titanic K");
istringstream iStream(src); //建立src到istrStream的联系
string s1, s2;
int n; double d; char c;
iStream >> s1 >> n >> d >> s2 >> c; //把src的内容当做输入流进行读取
//从输入流 iStream 进行读取,过程和从 cin 读取一样,只不过输入的来源由键盘变成了 string 对象 src。因此,"Avatar" 被读取到 s1,123 被读取到 n,5.2 被读取到 d,"Titanic" 被读取到s2,'K' 被读取到 c
cout <<s1<<endl;
cout <<n<<endl;
cout <<d<<endl;
cout <<s2<<endl;
cout <<c<<endl;

ostringstream oStream; //创建输出流
oStream << s1 << endl << s2 << endl << n << endl << d << endl << c <<endl;
//将变量值输出到流 ostrStream
cout << oStream.str();
//用 ostringstream类的str成员函数把ostringstream对象中的内容提取出来


return 0;
}