C++:string

有关“容量”和“字符”的操作

#include 

using namespace std;

int main()
{
	string mystring = {"abcdefghijklmnopqrst"};//使用string每次分配都会多分出一些空间,是为了避免频繁的操作内存
	cout << "△容器内容" << endl << mystring << endl;
	cout << "△输出第0和1个元素" << endl << mystring[0] << endl << mystring[1] << endl;//无范围检查
	cout << "△输出第0和1个元素" << endl << mystring.at(0) << endl << mystring.at(1) << endl;//有范围检查
	cout << mystring.c_str() << endl;//返回容器中动态数组的首地址
	cout << mystring.data() << endl;//同上
	cout << "△输出当前容量"<< endl << mystring.capacity() << endl;//输出当前容量
	cout << "△获取字符串长度"<

输出结果:

△容器内容
abcdefghijklmnopqrst
△输出第0和1个元素
a
b
△输出第0和1个元素
a
b
abcdefghijklmnopqrst
abcdefghijklmnopqrst
△输出当前容量
31
△获取字符串长度
20
△获取容器长度
20
△检测容器是否为空
0
△清空容器后容器内容

△清空容器后当前容量
31
△将容器容量降低到实际大小后的大小
15
△将容器实际大小设置为至少16后的大小
31
△将容器的实际大小设置为32后的大小
47
△增大后字符串的内容
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
△将容器的实际大小设置为16后的大小
47
△将mystring_b1从第3个字符开始的4个字符赋值给b1并且b1最后一个字符为空字符
cdef
△将mystring_b2从第3个字符开始的4个字符赋值给b2并且b2最后一个字符不设置为空字符
cdef烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫?第?
△mystring_b3最后一个字符设置为空字符并将mystring_b3从第3个字符开始的5个字符赋值给b3并且b3最后一个字符不设置为空字符
defg烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫?第?

string的“初始化”

 

#include 

using namespace std;

int main()
{
	string mystring = string();
	cout << "△创建长度为0的mystring"<

输出结果:

 

△创建长度为0的mystring

△将字符串b1拷贝给mystring_b1
abcdefgh
△将mystring_b1拷贝给mystring_b2
abcdefgh
△将mystring_b1从第5个字符串拷贝给mystring_b3
efgh
△将mystring_b1从第3个字符开始的4个字符拷贝给mystring_b4
cdef
△创建6个由a字符组成的字符串mystring_b5
aaaaaa

赋值操作

#include 

using namespace std;

int main()
{
	string mystring_b1 = "abcdefgh";
	string mystring_b2 = mystring_b1;//赋值
	cout << "△赋值操作" <

 输出结果:

#include

using namespace std;

int main()
{
    string mystring_b1 = "abcdefgh";
    string mystring_b2 = mystring_b1;//赋值
    cout << "△赋值操作" <     char a[] = "ABCDEFGH";
    mystring_b2 = a;
    cout << "△字符串赋值给mystring_b2" << endl << mystring_b2 << endl;
    mystring_b2.assign(mystring_b1, 2);
    cout << "△将mystring_b2对象赋值为从mystring_b1第3个字节的内容" << endl << mystring_b2 << endl;
    mystring_b2.assign(mystring_b1, 3, 3);
    cout << "△将mystring_b2对象赋值为从mystring_b1第4个字节开始总共3字节的内容" << endl << mystring_b2 << endl;
    mystring_b2.assign(6, 'a');
    cout << "△将mystring_b2对象赋值为6个a" << endl << mystring_b2 << endl;
}

 拼接操作

#include 

using namespace std;

int main()
{
	string mystring_b1 = "ab";
	string mystring_b2 = "cd";
	mystring_b2 = mystring_b1 + mystring_b2;
	cout << "△连接mystring_b1和mystring_b2并赋值给mystring_b2" << endl << mystring_b2 << endl;
	mystring_b2.append(mystring_b1);
	cout << "△把mystring_b2拼到给mystring_b1" << endl << mystring_b2 << endl;
	//剩下的操作和赋值差不多
}

输出结果:

△连接mystring_b1和mystring_b2并赋值给mystring_b2
abcd
△把mystring_b2拼到给mystring_b1
abcdab

 比较操作

#include 

using namespace std;

int main()
{
	string mystring_b1 = "abcd";
	string mystring_b2 = "abc";
	cout << "比较是否完全相同"<

输出结果 

比较是否完全相同
0
比较大小是否相同(字典序)
-1
比较mystring_2从第2个字符开始(包含)往右3个字符与mystring_b1大小是否相同
1
比较大小是否相同(字典序)
-1
比较mystring_2从第2个字符开始(包含)往右3个字符与b1大小是否相同
1

 交换操作

数据小交换内容,反之交换地址

#include 

using namespace std;

int main()
{
	string mystring_b1 = "abcd";
	string mystring_b2 = "abc";
	string mystring_b3 = "abcdefghijklmnopqrstuvwxyz1234567890";
	string mystring_b4 = "0987654321zyxwvutsrqponmlkjihgfedcba";
	cout << "b1和b2交换前b1数组地址" << endl << (void*)mystring_b1.c_str() << endl << "b2地址" << endl << (void*)mystring_b2.c_str() <

输出结果:

b1和b2交换前b1数组地址
0000008DAF51F510
b2地址
0000008DAF51F550
b3和b4交换前b3数组地址
0000020F570EA310
b4地址
0000020F570EA380
b1和b2交换后b1
abc
b2
abcd
b1和b2交换后b1数组地址
0000008DAF51F510
b2地址
0000008DAF51F550
b3和b4交换后b3
0987654321zyxwvutsrqponmlkjihgfedcba
b4
abcdefghijklmnopqrstuvwxyz1234567890
b3和b4交换后b3数组地址
0000020F570EA380
b4地址
0000020F570EA310

截取操作

 

#include 

using namespace std;

int main()
{
	string mystring_b1 = "abcd";
	string mystring_b2 = mystring_b1.substr(1,2);
	cout << "截取从b1第2个字符开始往后2个字符数的字符串并且赋值给b2后b1的值" << endl << mystring_b2 << endl;
}

输出结果:

截取从b1第2个字符开始往后2个字符数的字符串并且赋值给b2后b1的值
bc

还有查找、替换、插入、删除操作 

你可能感兴趣的:(c++,开发语言)