C/C++ - string

目录

C++ std::string 简介

字符串初始

字符串长度

字符串比较

字符串读取和输入

字符串访问和修改

字符串查找和替换

字符串增加和删除

字符串大小写转换

字符串的类型转换


C++ std::string 简介

  • ​std::string​​ 是标准 C++ 库中的一个类,用于处理字符串。
  • ​std::string​​ 类位于 ​​ 头文件中。
  • ​std::string​​ 类提供了许多方法和操作来处理字符串,包括字符串的连接、查找、插入、删除、截取、大小写转换等。

字符串初始

  • 可以使用默认构造函数创建一个空字符串。

    std::string str;  // 创建一个空字符串
    
  • 可以使用带有字符串参数的构造函数来创建一个包含指定内容的字符串。

    std::string str("Hello");  // 创建一个包含 "Hello" 的字符串
    
  • 可以使用赋值运算符 =​​​​ 将一个字符串赋值给另一个字符串。

    std::string str1 = "Hello";
    std::string str2 = str1;  // 将 str1 的值赋给 str2
    
  • 可以使用 c_str()​​​​ 方法将字符串转换为 C 风格的字符数组。

    std::string str = "Hello";
    const char* cstr = str.c_str();  // 将 str 转换为 C 风格字符串
    

字符串长度

  • 可以使用 length()​​ 或 size()​​ 方法获取字符串的长度。

    std::string str = "Hello, World!";
    std::size_t len = str.length();  // 获取字符串长度
    // len 为 13
    
  • 可以使用 empty()​​ 方法检查字符串是否为空。

    std::string str = "Hello";PP
    bool isEmpty = str.empty();  // 检查字符串是否为空,isEmpty 为 false
    
  • 可以使用 clear()​​ 方法清空字符串。

    std::string str = "Hello";
    str.clear();  // 清空字符串,str 变为空字符串
    

字符串比较

  • 可以使用比较运算符 ==​​、!=​​、<​​、>​​、<=​​、>=​​ 来比较两个字符串的大小关系。

    std::string str1 = "Hello";
    std::string str2 = "World";
    bool isEqual = (str1 == str2);  // 检查两个字符串是否相等,isEqual 为 false
    bool isLess = (str1 < str2);    // 检查 str1 是否小于 str2,isLess 为 true
    
  • 可以使用 compare()​​ 方法按字典序比较两个字符串。

    std::string str1 = "Hello";
    std::string str2 = "World";
    int result = str1.compare(str2);  // 比较 str1 和 str2,返回一个整数结果
    // 如果 result < 0,表示 str1 小于 str2
    // 如果 result > 0,表示 str1 大于 str2
    // 如果 result = 0,表示 str1 等于 str2
    
    • 返回 0,表示相等;
    • 返回结果小于 0,表示比较字符串中第一个不匹配的字符比源字符串小,或者所有字符都匹配但是比较字符串比源字符串短;
    • 返回结果大于 0,表示比较字符串中第一个不匹配的字符比源字符串大,或者所有字符都匹配但是比较字符串比源字符串长。

字符串读取和输入

  • 通过std::cin>>obj​​

  • 通过getline​​

    #include 
    #include 
    
    int main()
    {
    	std::string strPersonInfo;
    
    	//std::cout
    	//std::cin
    	//空格截断
    	std::cin >> strPersonInfo;
    	std::cout << strPersonInfo << std::endl;
    
    	//std::Getline
    	//回车截断
    	std::getline(std::cin, strPersonInfo);
    	std::cout << strPersonInfo << std::endl;
    
    	std::getline(std::cin, strPersonInfo, '&');
    	std::cout << strPersonInfo << std::endl;
    
    	return 0;
    }
    

字符串访问和修改

  • 可以使用下标运算符 []​​ 或 at()​​ 方法访问字符串中的单个字符。

    	std::string str = "Hello";
    	for (size_t i = 0; i < str.size(); i++)
    	{
    		std::cout << str[i] << std::endl;
    	}
    
    	for (size_t i = 0; i < str.size(); i++)
    	{
    		std::cout << str.at(i) << std::endl;
    	}
    
  • 可以使用 +​​ 运算符将两个字符串连接起来(生成新的字符串)。

    	std::string str1 = "Hello";
    	std::string str2 = "World";
    	std::string str3 = str1 + str2;
    
  • 可以使用+=运算符在字符串尾追加内容

    	std::string str1 = "Hello";
    	str1 += "World";
    
  • 可以使用append()​​方法在string对象后附加一个string对象或者C风格字符串

    	std::string str;
    	str.append("0xCC");
    
  • 可以使用string.push_back()​​方法在string对象后追加一个字符

    	std::string str;
    	str.push_back('a');
    

字符串查找和替换

  • 可以使用 find()​​​ 方法查找子串在字符串中的位置。

    	size_t nIndex;
    	std::string str = "Hello World Hello";
    
    	//查找字符,从默认索引开始
    	nIndex = str.find('o');
    
    	//查找字符,从指定索引开始
    	nIndex = str.find('l', 5);
    
    	//查找字符串,从默认索引开始
    	nIndex = str.find("llo");
    
    	//查找字符串,从指定索引开始
    	nIndex = str.find("llo", 5);
    
  • 可以使用 rfind()​​​ 方法从后往前查找子串在字符串中的位置。

    	size_t nIndex;
    	std::string str = "Hello World Hello";
    
    	//查找字符,从默认索引开始
    	nIndex = str.rfind('o');
    
    	//查找字符,从指定索引开始
    	nIndex = str.rfind('l', str.size());
    
    	//查找字符串,从默认索引开始
    	nIndex = str.rfind("llo");
    
    	//查找字符串,从指定索引开始
    	nIndex = str.rfind("llo", 5);
    
  • 可以使用 replace()​​​ 方法替换字符串中的子串。

    	size_t nIndex;
    	std::string str = "Hello World";
    
    	nIndex = str.find("World");
    	str.replace(nIndex, 5, "0xCC");
    
  • 可以使用string.substr()​​​ 函数来获取子串

    	size_t nIndex;
    	std::string str = "Hello World";
    
    	std::cout << str.substr(6, 5);
    

字符串增加和删除

  • 可以使用 string.insert()​​进行插入操作

    	std::string str = "Hello World";
    	str.insert(5 ,"Hello");
    
    	str.insert(0, 5, 'a');
    
  • 可以使用 string.erase()​​进行删除操作

    • 删除指定下标位置开始的所有字符
    • 从指定下标位置开始,删除指定数量的元素
    	std::string str = "Hello World";
    	str.erase(0, 5);
    

字符串大小写转换

  • 可以使用 std::transform()​​ 方法将字符串转换为大写或小写形式。

    	//#include 
    	std::string str = "Hello World";
    	std::transform(str.begin(), str.end(), str.begin(), ::tolower);
    	std::cout << str << std::endl;
    	std::transform(str.begin(), str.end(), str.begin(), ::toupper);
    	std::cout << str << std::endl;
    

字符串的类型转换

  • 可以使用 std::to_string()​​ 函数将其他类型(如整数、浮点数)转换为字符串。

    int num = 123;
    std::string str = std::to_string(num);  // 将整数转换为字符串,str 为 "123"
    
  • 可以使用 std::stoi()​​、std::stol()​​、std::stoll()​​ 将字符串转换为整数类型。

    std::string str = "123";
    int num = std::stoi(str);    // 将字符串转换为 int,num 为 123
    long num2 = std::stol(str);  // 将字符串转换为 long,num2 为 123
    
  • 可以使用 std::stof()​​、std::stod()​​、std::stold()​​ 将字符串转换为浮点数类型。

    std::string str = "3.14";
    float num = std::stof(str);       // 将字符串转换为 float,num 为 3.14
    double num2 = std::stod(str);     // 将字符串转换为 double,num2 为 3.14
    long double num3 = std::stold(str);  // 将字符串转换为 long double,num3 为 3.14
    

你可能感兴趣的:(编程基础-C/C++,c语言,c++,java)