//首先char数组和char*字符串可以自动转换成string。但是不可逆,必须调用函数才能做到逆向变换。
string s="fsgfsdrth";
s.at(0);//获取字符串一个指定字符和s[0]等效。
//Operators:可以用 ==, >, <, >=, <=, and !=比较字符串. 可以用 + 或者 += 操作符连接两个字符串
s=s+"1";
s.c_str();//返回const char*类型的指针。
s.length();//字符串长度。
s.compare("");//s和参数比较,大于为1,等于为0,小于为-1;
(s=="");//相等为1,否则为0;
copy(char* s,int num,int start);//返回一个拷贝后的字符数组,c++和Java的参数区别,这你是截取多少个,从哪开始。java一般是从哪到哪。
s.empty();//c++默认为空串不能用null来比较字符串。空串返回1;
s.erase(0, 2);//抹除字符,从哪开始,删除几个。这个是删除原来的。
string s = "hello world";
int i = s.find("world", 0);//find();查找字符串第一次出现的位置,从哪开始找,可做是否包含来用。当然也重载查找字符。找到了返回下标,没找到返回string::npos,rfind();逆向查找。
if (i!=string::npos) {
cout << "find it:" <<i<< endl;
}
else
{
cout << "no find it" << endl;
}
string s = "helloworld";
s.insert(5, ",");//字符串插入
cout << s << endl;
string s = "helloworld";
cout << s.substr(5, 8) << endl;//返回一个子串,从哪开始返回几个。
string s = "He am Tom";
cout << s.replace(3, 2, "is") << endl;//替换,指的是范围替换。
c++自定义的字符串替换函数
#include<iostream>
using namespace std;
void replace(string &str,string byReplace, string byUse) {//此方法很通用,仿照java替换方法的功能写的函数。
int index;
index = str.find(byReplace);
while (index!= string::npos)
{
str.replace(index, byReplace.size(), byUse);
index=str.find(byReplace,index+ byUse.size());
if (index == string::npos) {
return;
}
}
}
int main(void) {
string s = "He am Tom";
replace(s,"am","is");
cout << s << endl;//输出结果He is Tom
}
自定义split函数
new出来的数组不能用sizeOf(arry)/sizeOf()arry[0])去计算数组长度。
#include <string>
#include <list>
list<string> spilt(const string& str, const string& bySplitStr)
{
list<string> listStr;
int thisTimeStart = 0;
int thisTimeEnd;
int count;
while(true)
{
thisTimeEnd = (int)str.find(bySplitStr,thisTimeStart);
if(thisTimeEnd==str.npos)
{
string end=str.substr(thisTimeStart);
if(!end.empty())
{
listStr.push_back(end);
}
break;
}
count = thisTimeEnd-thisTimeStart;
listStr.push_back(str.substr(thisTimeStart,count));
thisTimeStart = thisTimeEnd+1;
}
if(listStr.size()==0)
{
listStr.push_back(str);
}
return listStr;
}
string listAt(list<string> &listStr, int index)
{
list<string>::iterator iter;
string s;
int i=0;
for (iter = listStr.begin(); iter != listStr.end(); iter++)
{
if(i==index)
{
s=*iter;
return s;
}
i++;
}
return s;
}
迭代器定义方法:
for (容器类名::iterator 迭代器名 = 容器名.begin(); 迭代器名 != 容器名.end(); ++迭代器名){}
迭代字符串
网友评论