• C++之字符串语法


    参考:
    [1]https://www.runoob.com/cplusplus/cpp-strings.html
    [2]C++的
    https://blog.csdn.net/Sarah_212/article/details/116720933
    [3]reverse
    reverse-csdn

    字符串分为C风格字符串(字符数组)和C++引入的string类型

    一.C语言的字符数组

    C风格的字符串初始化

    char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};
    //或者
    char site[] = "RUNOOB";
    
    • 1
    • 2
    • 3

    可以看到最后字符是null 字符,即 ‘\0’ 终止
    常用函数:

    	strcpy(s1, s2);
    //复制字符串 s2 到字符串 s1。
    
    strcat(s1, s2);
    连接字符串 s2 到字符串 s1 的末尾。连接字符串也可以用 + 号,例如:
    string str1 = "runoob";
    string str2 = "google";
    string str = str1 + str2;
    
    strlen(s1);
    返回字符串 s1 的长度。
    
    strcmp(s1, s2);
    如果 s1 和 s2 是相同的,则返回 0;否则返回非零
    
    字符串查找:(略)
    strchr(s1, ch);
    strstr(s1, s2);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    二.C++的string字符串

    C++的string类支持上述的所有函数
    主要参考2

    1.构造函数
    	//构造函数 (字符串是双引号)
    	string s1();//默认构造
    	string s2("hello1");//不要与常量弄混
    	string s3(4, 'w');
    	string s4("12345", 1, 3);//带字符串截取的功能
    
    • 1
    • 2
    • 3
    • 4
    • 5
    2.初始化(赋值)
    
    	//赋值
    	//拷贝赋值
    	string s1= "nihao";
    
    
    	//assign 分配函数 与构造类似 构造函数执行后 不能再用assign 但是使用assign后还可以用assign
    	string s1,s2;
    	s1.assign("sss");
    	s2.assign(s1, 1, 2);
    	s2.assign(4, 'K');
    	
    	//substr 子字符串
    	string s1, s2;
    	s1 = "hahah11";
    	s2=s1.substr(0, 2);
    	 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    string的构造函数可以使用以下四个方法进行。
    1)创建一个空的字符串

    string str;
    
    • 1

    2)使用一个字符串来初始化

    const char*str=“hello world”;
    
    • 1

    这里使用char来初始化一个字符串,也是根据C++中string对元素维护的方法(如上所述)。加上const说明指针str是常指针。指针指向是不可以发生改变的。
    3)使用一个string对象初始化string对象

    string s1;
    string s2(s1);
    
    • 1
    • 2

    此时是调用了拷贝构造函数。
    4)使用n个字符c进行初始化

    string s1(5,‘s’);
    s1=’’‘aaaaa’
    
    • 1
    • 2
    索引
    //at函数
    
    • 1
    长度
    size 
    
    • 1

    1.字符串的长度获取 (C++方法)
    有两种方法,一种是length(),一种是size()

    string str1="123";
    cout<<str1.length()<<endl;//输出3 
    cout<<str1.size()<<endl;//输出3 
    
    • 1
    • 2
    • 3

    2.字符数组的长度获取(C语言相关)
    strlen方法获取实际长度,sizeof获取申明的数组所占字节数

    char a[100]={'1','2','3'};
    char b[100]={"123"};
    char c[100];
    cin>>c;//输入123 
    cout<<strlen(a)<<endl;//输出3 
    cout<<strlen(b)<<endl;//输出3
    cout<<strlen(c)<<endl;//输出3 
    cout<<sizeof(a)<<endl;//输出100 
    cout<<sizeof(b)<<endl;//输出100 
    cout<<sizeof(c)<<endl;//输出100 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    翻转reverse

    可以用来翻转字符串、数组、向量
    参考[3]
    这里仅仅介绍翻转字符串

    //需要引入 #include
    
    	string s1("1122334455");
    	//reverse(s1.begin(), s1.end());//翻转所有
    	reverse(s1.begin()+1, s1.end()-3);//翻转下标1到后3个之前的部分
    	
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    三.应用

    1.字符串遍历

    参考:https://blog.csdn.net/qq_42270373/article/details/84589231

    	//遍历字符串的三种方法
    	// (1)类似数组的引用 [] (2)迭代器iterator (3)新式for循环
    	string  s1("1234abcd");
    	cout << "method 1:";
    	for(int i = 0; i < s1.size(); i++)
    		cout << s1[i];
    	cout << endl;
    
    	cout << "method 2:";
    	string::iterator it = s1.begin();//string类型要写
    	for (;it!=s1.end(); it++)
    		cout << *it;//引用的时候*it 引用内容
    	cout << endl;
    
    	cout << "method 3:";
    	for (auto a:s1)
    		cout << a;//引用的时候*it 引用内容
    	cout << endl;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    机器学习笔记 - 构建推荐系统(6) 用于协同过滤的 6 种自动编码器
    CMS指纹识别
    Faiss原理和使用总结
    IIC基础知识
    【面试题】 webpack面试篇
    RequestContextHolder
    10 小时 RTX 4090 兑换券免费送!用户调研招募中
    oracle学习42-增加表空间
    【C#】WPF获取屏幕分辨率
    mongodb基本操作及使用
  • 原文地址:https://blog.csdn.net/caijige/article/details/126432078