首页 > 编程语言 >C++ 字符串类 string

C++ 字符串类 string

时间:2023-08-21 21:32:13浏览次数:50  
标签:std string int C++ num 字符串

@TOC

前言

在C++中,字符串是一种常见的数据类型,用于存储和操作文本数据。C++标准库中提供了std::string类,它是一个功能强大的字符串类,提供了丰富的方法和操作符,使我们能够轻松地处理字符串。


一、string 类型概括

std::string 是C++标准库中定义的字符串类,它在< string>头文件中声明。它被设计为可变长度的字符序列,可以存储和操作任何ASCII或Unicode字符。std::string使用动态内存分配来管理字符串的存储,可以动态增长以适应不同长度的字符串。

C++语言中没有原生的字符串类型。C++标准库提供了 string 类型。

  • string 直接提供字符串的连接
  • string 直接支持字符串的大小比较
  • string 直接提供子串查找 和 提取。
  • string 直接支持字符串的插入和替换。

如果 大家想了解更多关于 std::string 类,可参考我之前的文章:C++ 编程std::string类

例如:下面代码将字符串数组进行比较排序,连接。

using namespace std;
void Sort(string* s,int len)
{
    for (int i = 0; i < len; i++)
    {
        for (int j = i; j < len; j++)
        {
            if (s[i] > s[j])								// 字符串 可 直接 比较大小
             swap(s[i], s[j]);
        }
    }
}

string Add(string* s, int len)						
{
    string ret;

    for (int i = 0; i < len; i++)
        ret += s[i] + " , ";					// 字符串 可 直接 相加

    return ret;
}

int main()
{
    string sa[5] = { "Hello World", "Apple", "Java", "C++","Python"};
	
	Sort(sa, 5);
	for (int k = 0; k < 5; k++)
	cout << sa[k] << endl;;
	
	cout << Add(sa,5)<< endl;
	return 0;
}

C++ 字符串类 string_字符串

二、字符串流

标准库 提供了相关的类对字符串和数字进行转化。

字符产流类: sstream 用于 string 的转换。

C++ 字符串类 string_函数模板_02

使用方法:

  1. string -> 数字
istringstream ss("123.45");
    double num;
    ss >> num;
  1. 数字 -> string
ostringstream oss;
   oss << 543.21;
   string s = oss.str();

示例代码:

使用 函数模板 可以更方便的将各种类型数字转化为字符串,将字符串转化为各种 类型的数字。如果对函数模板不太了解的可以参考我之前的文章:C++ 泛型编程:函数模板

using namespace std;

template <typename T>									// 使用函数模板
T To_num(const string& s,T& num)						// 字符串 转换为 数字
{
    istringstream ss(s);

    if(ss >> num)
        return num;
}

template<typename T>										// 使用函数模板
string To_string(T& num)								// 数字 转换为 字符串
{
    ostringstream os;
    os << num;
    return os.str();
}

int main()
{
    string s1 = "12.34";

    int num1 = 10;
    float num2 = 20.22;

    cout << To_string(num1) << endl;					// 打印出 字符串
    cout << To_string( num2) << endl;

    cout << To_num(s1,num1) << endl;
    cout << To_num(s1, num2) << endl;					// 打印数字

    return 0;
}

C++ 字符串类 string_字符串_03


总结

std::string是C++中最常用的字符串类之一,具有丰富的功能和用法。通过使用std::string,我们能够方便地创建、访问、修改和操作字符串数据。在编写C++程序时,了解和熟练掌握std::string的方法和操作是非常重要的。

标签:std,string,int,C++,num,字符串
From: https://blog.51cto.com/u_16159289/7180075

相关文章

  • C++基础-STL stack 栈
    stack栈1、特性在一端插入元素,在同一端删除元素,具有先进后出的特性。底层实现一般用list或deque,封闭头部即可,数据先进后出,不支持随机访问。2、适用情况需要一个先进后出结构时3、头文件#include<stack>4、复杂度插入:push(),O(1)删除:pop(),O(1)查找(栈顶):top(),O(1)5、定义及常用......
  • 当字符串中含有%,先使用 encodeURI 进行编码,再使用decodeURI解码报错
    报错原因:decodeURI不允许参数有%,它会自动把%25转义为%,这个转义后的%导致的报错解决方法一在解码decodeURI之前将%替换为%25编码:url=encodeURI(encodeURI(url));解码:url=url.replaceAll("%","%25");url=decodeURI(decodeURI(url));解决方法二在编码encodeURI之前就将%......
  • 北大ACM poj1050 To the Max(C++)
    TotheMaxTimeLimit:1000MS MemoryLimit:10000KTotalSubmissions:32446 Accepted:16930DescriptionGivenatwo-dimensionalarrayofpositiveandnegativeintegers,asub-rectangleisanycontiguoussub-arrayofsize1*1orgreaterlocatedwithi......
  • python判断字符串是否包含子串的五种方法
    python判断字符串是否包含子串的五种方法一、用find()方法判断要判断某一个字符串是否包含某一个子串,方法之一是可以利用python内置的字符串方法find()来查找,如果查找到,就返回子串第一个字符在原字符串中的索引位置,如果找不到,则返回-1,实例代码如下:>>>string='笨鸟工具,x1y1z1......
  • 8、C++ 继承
    参考资料:C++继承|菜鸟教程(runoob.com)面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。当创建一个类时,您不需要重新编写新的数据成员和成员函......
  • C++文档入口汇总
    一、C++参考手册(中文)cppreferencehttps://zh.cppreference.com/二、菜鸟教程(中文)https://www.runoob.com/cplusplus/cpp-tutorial.html三、C++的常用库及其文档:标准模板库(STL)提供了许多数据结构和算法,如向量、链表、队列、堆栈、映射和排序算法等。其中文文档链接:https://......
  • Failed to execute 'btoa' on 'Window': The string to be encoded contains characte
    在使用浏览器内置APIbtoa()编码base64时:报错Failedtoexecute'btoa'on'Window':ThestringtobeencodedcontainscharactersoutsideoftheLatin1range报错信息解释:报错信息中指出字符串中包含了Latin1范围之外的字符,导致无法使用window.btoa进行解析。根据你提供......
  • c++算法之哈希表
    啥是哈希表 哈希表,类似散列表,是一种存储数据的一种方式。只能说是有点奇葩。他是通过将值转换成数组的下标,也就是f[x]=x的意思,大家估计都能理解吧......
  • 4.5 C++ Boost 文件目录操作库
    Boost库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量、可移植、高效的C应用程序。Boost库可以作为标准C库的后备,通常被称为准标准库,是C标准化进程的重要开发引擎之一。使用Boost库可以加速C应用程序的开发过程,提高代码质......
  • 4.7 C++ Boost 多线程并发库
    Boost库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量、可移植、高效的C应用程序。Boost库可以作为标准C库的后备,通常被称为准标准库,是C标准化进程的重要开发引擎之一。使用Boost库可以加速C应用程序的开发过程,提高代码质......