C++ string类
#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; }