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

目录
  • 正文
  • 定义string
  • 初始化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对象的资料请关注我们其它相关文章!

(0)

相关推荐

  • C++中String类型的逆序方式

    目录 C++String类型的逆序 这里使用反向迭代器实现 用String方法逆序输出字符串数组 方法 C++String类型的逆序 这里使用反向迭代器实现 #include<iostream> #include <string> using namespace std; int main() { string str; cin>>str; string s(str.rbegin(),str.rend()); cout << s <<endl;

  • C++11系列学习之列表初始化

    目录 前言: 旧标准初始化方式 C++11标准初始化方式 初始化列表技术细节 总结 前言: 由于旧标准初始化方式太过繁杂,限制偏多,因此在新标准中统一了初始化方式,为了让初始化具有确定的效果,于是提出了列表初始化概念. 旧标准初始化方式 普通数组初始化: int i_arr[3] = {1, 2, 3} POD类型初始化(即plain old data类型,可以直接使用memcpy复制的对象): struct A { int x; struct B { int i; int j; } b; }

  • C++中的数字转字符串to_string

    目录 C++数字转字符串to_string C++转换为字符串(to_string:to_wstring) 一.to_string 二.to_wstring C++数字转字符串to_string 有时候我们在编程的时候,需要将数字转换成字符串,c++ string 中有个方便的函数,就是to_string. 例子: #include <iostream>    #include <string>      using namespace std; int main() {    

  • C++示例讲解初始化列表方法

    目录 定义 特性 初始化阶段 计算阶段 成员变量的初始化顺序 定义 我们先来看一个例子 Date(int year, int month, int day)//带参构造函数 :_year(year) , _month(month) , _day(day) {} 这是一个简单的初始化列表案例,以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括 号中的初始值或表达式. 特性 A.初始化列表能只能初始化一次,多次初始化会报错 Date(int year =

  • C++实现String类的方法详解

    目录 前言 string模拟实现 string简单实现 string完整实现 完整代码 前言 在C语言中,没有专门用来表示字符串的类型.C语言的字符串是一系列以’\0’为结尾的字符的集合.虽然C语言为这样的字符串提供了一系列的库函数如strcpy, strcmp等等,但这些函数与字符串这个类型是分开的,这不太符合C++中面试对象的思想,所以在C++中封装了一个string类,来帮助我们操作字符串.string该如何使用,我这里就不做赘述了,大家可以去看看官方文档呀 string - C++ Re

  • 一文带你分清C++的定义,声明和初始化

    目录 定义 初始化 声明 实例 声明时提供初值 在构造函数内赋初值,而不用列表 总结 定义 变量的定义用于为变量分配存储空间,还可以为变量指定初始值. int units_sold; double sales_price, avg_price; std::string title; Sales_item curr_book; // class Sales_item 初始化 C++ 支持两种初始化变量的形式:复制初始化和直接初始化.复制初始化语法用等号(=),直接初始化则是把初始化式放在括号中.

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

    目录 正文 定义string 初始化string 全面初始化 默认初始化 拷贝初始化 直接初始化 正文 在c++当中,标准类型string来代表可变长的字符串序列,使用string需要加载string 头文件,而方法定义在命名空间std当中,所以使用的基本结构: #include <string> int main(){ using std::string; string str1 = "hello world"; return 0; } 当然也可以结合之前的输入输出部分:

  • Java语言面向对象编程思想之类与对象实例详解

    在初学者学Java的时候,面向对象很难让人搞懂,那么今天小编就来为大家把这个思想来为大家用极为简单的方法理解吧. 首先我们来简单的阐述面向对象的思想. 面向对象: 官方的语言很抽象,我们把官方的解释和定义抛开.想想,自己有什么,对!!我们自己有手脚眼口鼻等一系列的器官.来把自己所具有的器官就可以看作我们的属性,自己是不是可以喜怒哀乐和嬉笑怒骂,这些是不是我们的行为,那么自己的具有的属性加自己有的行为就称为一个对象. 注意!!我们自己,一个个体是一个对象,因为,你是你,我是我,我们虽然有相同的,但

  • vue数据初始化initState的实例详解

    数据初始化 Vue 实例在建立的时候会运行一系列的初始化操作,而在这些初始化操作里面,和数据绑定关联最大的是 initState. 首先,来看一下他的代码: function initState(vm) { vm._watchers = []; var opts = vm.$options; if(opts.props) { initProps(vm, opts.props); //初始化props } if(opts.methods) { initMethods(vm, opts.method

  • JSP的request对象实例详解

    JSP的request对象实例详解 一 request对象定义 客户端的请求信息被封装在request对象中,通过它才能了解客户的需求,然后做出响应.它是HttpServletRequest类的实例.request对象具有请求域,即完成客户端的请求之前,该对象一直有效. 二 request对象方法 三 实例 <%@ page language="java" import="java.util.*" contentType="text/html; ch

  • Java创建内部类对象实例详解

    Java创建内部类对象实例详解 要想使用new生成一个内部类的实例,需要先指向一个外部类的实例,也就是先生成外部类的实例, 因为内部类可以调用外部类的成员,当没有外部类实例的时候也就没有这些成员的内存空间,内部类在实例化的时候,调用外部类的成员就会出错,所以需要使用外部类的实例 + 点 + new 的方式实例化一个新的内部类 class TestInner{ public static void main(String [] args) { Outer outer = new Outer();

  • zlib库压缩和解压字符串STL string的实例详解

    zlib库压缩和解压字符串STL string的实例详解 场景 1.一般在使用文本json传输数据, 数据量特别大时,传输的过程就特别耗时, 因为带宽或者socket的缓存是有限制的, 数据量越大, 传输时间就越长. 网站一般使用gzip来压缩成二进制. 说明 1.zlib库可以实现gzip和zip方式的压缩, 这里只介绍zip方式的二进制压缩, 压缩比还是比较可观的, 一般写客户端程序已足够. 2.修改了一下zpipe.c的实现, 其实就是把读文件改为读字符串, 写文件改为写字符串即可. 例子

  • js对象实例详解(JavaScript对象深度剖析,深度理解js对象)

    这算是酝酿很久的一篇文章了. JavaScript作为一个基于对象(没有类的概念)的语言,从入门到精通到放弃一直会被对象这个问题围绕. 平时发的文章基本都是开发中遇到的问题和对最佳解决方案的探讨,终于忍不住要写一篇基础概念类的文章了. 本文探讨以下问题,在座的朋友各取所需,欢迎批评指正: 1.创建对象 2.__proto__与prototype 3.继承与原型链 4.对象的深度克隆 5.一些Object的方法与需要注意的点 6.ES6新增特性 下面反复提到实例对象和原型对象,通过构造函数 new

  • JavaScript String 对象常用方法详解

    字符串是不可变的.字符串方法,不会改变原有字符串的内容,而是返回一个新字符串. charAt():返回在指定位置的字符. concat():连接两个字符串文本,并返回一个新的字符串. indexOf(): indexOf() 方法返回指定值在字符串对象中首次出现的位置. match(): 使用正则表达式与字符串相比较. replace(): 被用来在正则表达式和字符串直接比较,然后用新的子串来替换被匹配的子串. slice(): 摘取一个字符串区域,返回一个新的字符串. split(): 通过分

  • Bootstrap学习笔记之进度条、媒体对象实例详解

    1.基础进度条 要写在<div class="progress"></div>里面. <div class="col-md-6"> <div class="progress"> <div class="progress-bar" style="width:30%;"></div> </div> </div> 2.

  • 对python:循环定义多个变量的实例详解

    我们可能会时长碰到这样一个场景,计算得到一个非固定值,需要根据这个值定义相同数量个变量. 实现方式的核心是exec函数,exec函数可以执行我们输入的代码字符串. exec函数的简单例子: >>>exec ('print "hello world"') hello world 可以很清晰的看到,我们给exec传入一个字符串'print "hello world"',exec是执行字符串里面的代码print "hello world&quo

随机推荐