C++定义和初始化string对象实例详解

 更新时间:2022年12月07日 09:02:34   作者:老边  
这篇文章主要为大家介绍了C++定义和初始化string对象实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

正文

在c++当中,标准类型string来代表可变长的字符串序列,使用string需要加载string 头文件,而方法定义在命名空间std当中,所以使用的基本结构:

#include <string>
int main(){
   using std::string;
   string str1 = "hello world";
   return 0;
}

当然也可以结合之前的输入输出部分:

#include <iostream>
#include <string>
int main(){
   using namespace std;
   string str1 = "hello world";
   cout << str1 << endl;
   return 0;
}

这里可以看出,std命名空间包含了iostream头文件当中的cout和endl,也包含了string 头文件当中的string

定义string

和其他的变成语言的思路类似,标准类型string可以定义string类型的字符串(嘿嘿嘿,好像一句废话),常见的定义方式如下:

string str1; //声明一个空的字符串
string str2 = str1; //声明一个str2,它是str1的副本
string str3 = "hello world"; //上面做过的一种写法,str3是字符串字面值的副本
string str4(10,'b'); //str4的内容是 bbbbbbbbb ,这里要注意第二给参数需要是字符而不是字符串

这里聊到了一个概念叫做字面值,其实就是字面值常量,形如38这样一个一望而知的值被称为字面值常量,每个字面值常量都对应一种数据类型,我们上面聊的就是string类型的字面值常量,但是需要细致区分的是字符和字符串字面值:

'a' //字符字面值
"hello world" //字符串字面值

除了肉眼可见的长度和引号(尽管看得见,必须要仔细)的区别外,编译器会在每个字符串后面添加一个空字符'\0',因此字符串字面值的长度要比肉眼所见的+1

初始化string

当对象创建是获得了一个特定的值,我们就可以说这个值被初始化了,通过string类型我们来看一下初始化的分类:

全面初始化

使用花括号包围的初始化被称为全面初始化,这个是c++11的新特性,比如:

string str4(10,'b'); 

默认初始化

定义变量的时候没有指定初始的值,这种也是初始化,被称为默认初始化,变量的值的类型由变量的类型来决定,比如:

string str1;

拷贝初始化

使用等于号进行初始化就是拷贝初始化,因为实际上是编译器把等号右侧的初始值拷贝到等号左侧的新创建的对象当中,(如果基于面向对象理解:直接初始化实际上是要求编译器选择参数最匹配的一般构造函数)比如:

string str2 = str1;
string str3 = "hello world"; 

直接初始化

嘿嘿嘿,域拷贝初始化相反,不使用等号进行初始化(其实就是不进行赋值拷贝动作),就是直接初始化,比如:

string str4(10,'b');

以上就是C++定义和初始化string对象实例详解的详细内容,更多关于C++定义初始化string对象的资料请关注脚本之家其它相关文章!

相关文章

  • C++数据结构之双向链表

    C++数据结构之双向链表

    这篇文章主要为大家详细介绍了C++数据结构之双向链表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 用C语言实现五子棋游戏

    用C语言实现五子棋游戏

    这篇文章主要为大家详细介绍了用C语言实现五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • C++11关于auto关键字的使用示例

    C++11关于auto关键字的使用示例

    今天小编就为大家分享一篇关于C++11关于auto关键字的使用示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • C++程序中使用Windows系统Native Wifi API的基本教程

    C++程序中使用Windows系统Native Wifi API的基本教程

    这篇文章主要介绍了C++程序中使用Windows系统Native Wifi API的基本教程,包括在程序中控制无线网卡开关的方法,需要的朋友可以参考下
    2016-03-03
  • C语言之实现单链表指定结点的插入方式

    C语言之实现单链表指定结点的插入方式

    这篇文章主要介绍了C语言之实现单链表指定结点的插入方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 详解C++中static的用法

    详解C++中static的用法

    这篇文章主要介绍了c++中static的用法详解,C 语言的 static 关键字有三种用途,具体内容详情大家跟随脚本之家小编一起学习吧
    2018-05-05
  • C++构造函数初始化列表的实现详解

    C++构造函数初始化列表的实现详解

    构造函数主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无须手动调用;析构函数主要作用在于对象销毁前系统自动调用,执行一 些清理工作
    2022-09-09
  • C语言选择、循环、函数、数组与操作符

    C语言选择、循环、函数、数组与操作符

    这篇文章主要介绍了C语言选择、循环、函数、数组与操作符,文章基于C语言展开对主题的详细介绍,下文内容需要的小伙伴可以参考一下
    2022-04-04
  • C++中constexpr与模板元编程的基础、常见问题、易错点及其规避策略

    C++中constexpr与模板元编程的基础、常见问题、易错点及其规避策略

    C++编译时计算允许程序在编译阶段完成计算任务,constexpr与模板元编程是C编译时计算的两把利剑,它们不仅能够提升程序的性能,还能增强代码的健壮性和可维护性,通过避开本文阐述的易错点,开发者可以更加得心应手地运用这些特性,编写出既高效又优雅的C代码
    2024-06-06
  • C/C++恶意代码盘点之文件自动删除

    C/C++恶意代码盘点之文件自动删除

    恶意代码的分类包括计算机病毒、蠕虫、木马等,有些技术经常用到,有的也是必然用到。今天我们就分享一下文件自动删除,感兴趣的可以了解一下
    2022-09-09

最新评论