c++ string的使用

string初始化

int main()
{
	using std::string;
	string str1;
	string str2(5,'c');
	string str3("now the time");
	string str4(str3,4,6);
	string str5("abcdd",2);
	
	std::cout << str1 << std::endl; //空
	std::cout << str2 << std::endl;	//ccccc
	std::cout << str3 << std::endl;	//now the time
	std::cout << str4 << std::endl;	//the ti
	std::cout << str5 << std::endl;	//ab
	return 0;
}

append(从末尾添加文本)

string str = "whatareyoudoing";
string str1 = str.append("111");
string str2 = str.append(str1);
string str3 = str.append(str1,5,6);
string str4 = str.append("helloworld",8);
string str5 = str.append(4,'c');

assign(赋值)

string str = "whatareyoudoing";
string str1 = str.assign(str,5,6);
string str2 = str.assign("helloworld",8);
string str3 = str.assign("111");
string str4 = str.assign(str1);
string str5 = str.assign(4,'c');

at(取得某个位置的字符)

//at中的数字不能超过str的字符数-1
std::cout << str.at(20) << std::endl;

begin,end(迭代器)

相当于一个指针,str.begin()指向字符串的第一个字符,str.end()指向字符串最后一个字符的后一个字符。

string::iterator aaa;
for(aaa=str.begin();aaa!=str.end();aaa++)
{
	std::cout << *aaa << std::endl;
}

c_str()

使字符串编程符合C标准的字符串,格式为const char *;

const char * a;
a = str.c_str();
std::cout << a << std::endl;
//或者将c_str()强制转换成(char *)
char * a;
a = (char *)str.c_str();
std::cout << a << std::endl;

注意:上面的a只是一个指针,被c_str()赋值后也还是一个指针,不会变成一个字符串常量。

capacity(容量大小)

capacity()函数返回在重新申请更多的空间前字符串可以容纳的字符数. 这个数字至少与 size()一样大,和length也一样大

compare(比较)

简单的用法,用返回值大于0,等于0,小于0来做判断。但是返回值是一个具体数字,具体规律不详。只知道,没隔一个数字会重新计数。

string a = "abcd5d";
string b = "abcd2d";
std::cout << a.compare(b) << std::endl;

data(返回指向自己第一个字符的指针)

string a = "abcd5d";
const char * b = a.data();
std::cout << *b << std::endl;

empty()判断是否为空

string a = "abcd5d";
string b = "";
std::cout << a.empty() << std::endl;
std::cout << b.empty() << std::endl;

erase(删除)

string a = "abcd5d";
a.erase();    //删除全部
a.erase(2);    //删除第二个后面的所有
a.erase(2,1);    //产出第二个后面的一个

find(查找)

string a = "abcd5";
const char * b = "cd";
//a.find('d',4);
std::cout << a.find(b,0) << std::endl;

find_first_of,find_first_not_of,find_last_of,find_last_not_of

string a = "abcd5";
const char * b = "cda";
std::cout << a.find_first_of(b,0) << std::endl;

insert(插入)

string a = "abcd";
string b = "efghijk";
string c;
//c = a.insert(2, 2, '6');
//c = a.insert(2, "1234");
//c = a.insert(2, "1234", 2);
//c = a.insert(2, b);
//c = a.insert(2, b, 3, 4);
std::cout << c << std::endl;

length(长度)

和size()大小一样

rbegin和rend(逆向迭代器)

replace(替换)

//a.replace(2,3,"123");
//a.replace(2,3,"12345",2,2);	//用后面字符串的2个字符替换a中的3个字符
//a.replace(2,3,b);
//a.replace(2,3,b,2,2);
//a.replace(2,3,"1234",2);
//a.replace(2,3,3,'0');

reserve和capacity对应

表示当前的容量最多能容纳多少。一般在处理内容较多的时候,如果capacity较小,在插入和删除时,当达到零界点时,会重新改变容量,会浪费很大的资源。所以我们一般都先定义比较大的capacity,就不必考虑开销了。

resize(大小)

string a = "abcdefg";
a.resize(5,'a');
//a.resize(5);
//如果resize中的值小于a.size,则a会取前5个值
//如果resize中的值大于a.size,则多出来的空间会填充a

rfind(返回最后一个匹配的位置)

和find对应

substr(返回一个子串)

b = a.substr(2,5);
//b是a的返回值,a中的数据不会变

swap(交换字符串)

a.swap(b);

猜你喜欢

转载自blog.csdn.net/qq_34759481/article/details/81865602