千家信息网

C++字符串类型的基本概念

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要讲解了"C++字符串类型的基本概念",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++字符串类型的基本概念"吧!要使用C++字符串类型中的
千家信息网最后更新 2026年11月03日C++字符串类型的基本概念

这篇文章主要讲解了"C++字符串类型的基本概念",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++字符串类型的基本概念"吧!

要使用C++字符串类型中的string 类型必须先包含相关的头文件

#include 

例如下面是上一小节定义的字符数组

#include  string st( "The expense of spirit\n" );

st 的长度由size()操作返回不包含终止空字符

  1. cout << "The size of "<< st<< " is " << st.size()<<
    " characters, including the newline\n";

string 构造函数的第二种形式定义了一个空字符串,例如

string st2; // 空字符串

我们怎样能保证它是空的当然一种办法是测试size()是否为0

if ( ! st.size() )  // ok: 空

更直接的办法是使用empty()操作

if ( st.empty() )  // ok: 空

如果C++字符串类型中不含有字符则empty()返回布尔常量true ,否则返回false。第三种形式的构造函数用一个string 对象来初始化另一个string 对象,例如

string st3( st );

将st3 初始化成st 的一个拷贝,怎样验证呢?等于操作符比较两个string 对象,如果相等则返回true

if ( st == st3 )  // 初始化成功

怎样拷贝一个字符串呢?最简单的办法是使用赋值操作符,例如

st2 = st3; // 把st3 拷贝到st2 中

首先将与st2 相关联的字符存储区释放掉,然后再分配足够存储与st3 相关联的字符的存储区。***将与st3 相关联的字符拷贝到该存储区中。我们可以使用加操作符+ 或看起来有点怪异的复合赋值操作符+= 。将两个或多个字符串连接起来。例如:给出两个字符串

string s1( "hello, " );  string s2( "world\n" );

我们可以按如下方式将两个字符串连接起来,形成第三个字符串

string s3 = s1 + s2;

如果希望直接将s2 附加在s1 后面那么可使用+= 操作符

s1 += s2;

s1 和s2 的初始化包含了一个空格一个逗号以及一个换行,这多少有些不方便,它们的存在限制了对这些string 对象的重用,尽管它满足了眼前的需要。一种替代做法就是混合
使用C 风格的字符串与string 对象。如下所示:

const char *pc = ", ";  string s1( "hello" );  string s2( "world" );  string s3 = s1 + pc + s2 + "\n";

这种连接策略比较受欢迎,因为它使s1 和s2 处于一种更容易被重用的形式。这种方法能够生效是由于string 类型能够自动将C 风格的字符串转换成string 对象。例如:这使我们
可以将一个C 风格的字符串赋给一个string 对象。

string s1;  const char *pc = "a character array";  s1 = pc; // ok

但是反向的转换不能自动执行,对隐式地将string 对象转换成C 风格的字符串。string类型没有提供支持,例如,

下面试图用s1 初始化str。 就会在编译时刻失败

char *str = s1; // 编译时刻类型错误

为实现这种转换必须显式地调用名为c_str()的操作

char *str = s1.c_str(); // 几乎是正确的但是还差一点

名字c_str()代表了C++字符串类型中的string 类型与C 风格字符串两种表示法之间的关系。字面意思是给我一个C 风格的字符串,表示——即指向字符数组起始处的字符指针。但是这个初始化还是失败了,这次是由于另外一个不同的原因,为了防止字符数组被程序直接处理,c_str()返回了一个指向常量数组的指针(下一节将解释常量修饰符const)

const char*

str 被定义为非常量指针所以这个赋值被标记为类型违例,正确的初始化如下

const char *str = s1.c_str(); // ok

string 类型支持通过下标操作符访问单个字符,例如在下面的代码段中,字符串中的所有句号被下划线代替

string str( "fa.disney.com" );  int size = str.size();  for ( int ix = 0; ix < size; ++ix )  if ( str[ ix ] == '.' )  str[ ix ] = '_';

感谢各位的阅读,以上就是"C++字符串类型的基本概念"的内容了,经过本文的学习后,相信大家对C++字符串类型的基本概念这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

字符 字符串 类型 对象 C++ 操作符 风格 概念 两个 拷贝 数组 存储 办法 常量 指针 空字符 关联 学习 内容 函数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳恒合互联网络科技有限公司 智能科技公司是互联网公司吗 科技类互联网 互联网科技金融 善班互联网科技 天扬科技互联网广告 玖二柒互联网科技公司待遇 湖南诚度互联网科技有限公司 栖莱科技互联网股份有限公司 重庆互联网医院沙龙医盟信息科技 成都互联网科技公司工作好不好 燊美集互联网科技有限公司 互联网时代的科技公司 智帮互联网科技公司最近动向 本届互联网大会上的黑科技 陕西云淼互联网科技公司 济南小医互联网科技有限公司招聘 互联网科技机房 数字互联网科技有限公司 现代科技的标志之一的互联网 喔噻互联网科技有限公司 中关村互联网科技集团 深圳恒合互联网络科技有限公司 互联网科技卖菜 中国互联网科技发展 碳银互联网科技 凡科互联网科技 华脉科技工业互联网产品 美国互联网科技公司 数字科技和互联网金融哪个好
0