C++中的string类型
1、string 类
1.1 和char *的异同
在C++
当中,除了char *
类型,还有专门的字符串类型,就叫做string
。
通过包含头文件string就可以使用:
include<string>
在很多方面,string类型的使用方法和char *一样,例如:
string str1; string str2 = "hello world"; // 初始化和char *一致 cout << str2 << endl; // cout和char *一致 cout << str[2] << endl; // 元素访问和char *一致
除此之外,它还有一个更大的好处,就是当我们从外界读入字符串的时候,再也不用操心读入的字符串超界的问题了。因为string
类设计可以让程序自动处理字符串的大小。
string str1; cin >> str1;
1.2 C++11初始化
我们也可以使用C++11的列表初始化特性在string
上,不过其实没必要,直接使用等于号赋值更方便一些:
string str1 = {"hello world"}; string str2 {"test"};
1.3 拼接
在使用char *
的时候,如果我们要拼接两个字符串,需要调用函数strcat
来实现。而有了string
,我们可以直接使用加号来拼接两个字符串:
string str1 = "hello"; string str2 = "world"; string str3 = str1 + str2;
不仅如此,还可以使用+=,表示把另外一个字符串添加在自己末尾:
str1 += str2; // 等价于str1 = str1 + str2
1.4 长度
对于char *的字符串,我们要求长度,需要使用strlen
函数。而string
类型的字符串,我们可以直接调用.size
()函数:
string str = "hello"; cout << str.size() << endl; // output 5
1.5 IO
前文说了,string
类的cin
和cout
用法都和char *
完全一致,不过在读取一行的时候有些区别。
char st[100]; cin.getline(st, 100); string str; getline(cin, str);
对于char *
来说,我们调用的cin.getline
表示的是cin
中的一个方法。而后者,我们调用的getline
传入了cin,这里的cin
是一个传入的参数,并且也没有指定长度,因为string
会自动设定长度。
1.6 原始字符串
关于string
类型,C++11有一个原始字符串的新特性。
在字符串表示当中,当我们要添加一些特殊字符的时候,往往需要在前面加上反斜杠,表示取义。
当这类字符多了之后,就会很麻烦:
cout << "i want to output \"hello world\"" << endl;
如果我们要换行,还要在其中加入\n
。针对这个问题C++11提出了原始字符串,也就是说在原始字符串当中所有的符号都会被原本原样地输出,不需要再使用\来取义了。
原始字符串以"R(开头)"结尾,`比如刚才的内容就可以写成:
cout << R"(i want to output "hello world")" << endl;
不仅如此,我们还可以随意换行:
cout << R"(i want to output "hello world")" << endl;
但是有一个小问题,假如我们想要输出的结果当中也包含"(该怎么办呢?也有办法,编译器允许我们在"和(之间加入任意的字符来做区分(空格、左括号、右括号、斜杠、控制字符除外),这样我们在结尾的时候,也需要加上同样的字符。例如:
cout << R"tst("(test)")tst" << endl;
运行之后,屏幕上会输出"(test)"的结果。
到此这篇关于C++中的string类型的文章就介绍到这了,更多相关C++ string类型内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
注:文章转自微信公众号:Coder梁(ID:Coder_LT)
相关文章
- vector是表示可以改变大小的数组的序列容器,本文主要介绍了C++STL标准库std::vector的使用详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2022-03-06
- 这篇文章主要介绍了C++中取余运算的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
- 这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
- 本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
php中浮点型(float)和整型(integer)数据类型详解
文章分析了关于php中浮点型(float)和整型(integer)数据类型的用法区别以及在那种情况下会出现数据长度不够。 取值只能为True或者False,当其他类型转化为boolean类...2016-11-25- 本篇文章主要介绍了C++中四种加密算法之AES源代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。...2020-04-25
- 这篇文章主要介绍了Javascript类型转换的规则实例解析,涉及到javascript类型转换相关知识,对本文感兴趣的朋友一起学习吧...2016-02-27
- 本篇文章主要是对c#中数据类型占用的字节数进行了详细的介绍。需要的朋友可以过来参考下,希望对大家有所帮助...2020-06-25
mybatis 返回Integer,Double,String等类型的数据操作
这篇文章主要介绍了mybatis 返回Integer,Double,String等类型的数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-25- 整数拆分,指把一个整数分解成若干个整数的和。本文重点给大家介绍C++ 整数拆分方法详解,非常不错,感兴趣的朋友一起学习吧...2020-04-25
- 这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
- 这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
- 假如现在有这样一个表单,是添加元素用的。<form id='addForm' action='UserAdd.action' type='post'> <label for='uname'>用户名</label>:<input type='text' name='uname' id='uname'><br>...2015-11-24
- 在PHP中,大部分变量类型,如字符串,整型,浮点,数组等都是值类型的,而类和对象是引用类型,在使用的时候,需要注意这一点。看到网友在讨论PHP的&符号,要彻底理解它的用法,就有必要讨论一下变量的两种形式。PHP的变量在内存中是这样...2015-10-23
- 这篇文章主要介绍了C++ bitset用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
- 虽然Javascript是弱类型语言,但是,它也有自己的几种数据类型,分别是:Number、String、Boolean、Object、Udefined、Null。其中,Object属于复杂数据类型,Object 由无序的键值对组成。其余几种都属于简单数据类型。注意:变量...2015-10-21
- 本篇文章小编并不是为大家讲解string类型的用法,而是讲解我个人比较好奇的问题,就是string 类型占几个字节...2020-04-25
- 这篇文章主要介绍了C#泛型类型知识,文中代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-06-25
- 这篇文章主要为大家详细介绍了C++ Eigen库计算矩阵特征值及特征向量,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25
- 这篇文章主要为大家详细介绍了JavaScript实现数据类型的相互转换,感兴趣的朋友可以参考一下...2016-03-09