C++ Primer笔记(3.2.1)—— 定义和初始化string对象

C++ Primer笔记(3.2.1)—— 定义和初始化string对象

/********************************************************************************************/
/* 标准库类型string表示可变长的字符序列,使用string类型必须首先包含string头文件。作为标准库 */
/* 的一部分,string定义在命名空间std中。                                                    */
/********************************************************************************************/

#include<iostream>
#include<string>

using std::string;

int main()
{
	/* ----- 初始化string对象的方式 ----- */
	string s1;             //默认初始化,s1是一个空串
	string s2(s1);         //s2是s1的副本
	string s3 = s1;        //等价于s2(s1)
	string s4("value");    //s3是字面值"value"的副本,除了字面值最后的那个空字符除外
	string s5 = "value";   //等价于s4("value")
	string s6(10, 'c');    //把s6初始化为由连续10个字符c组成的串

	std::cout << "s1的值为:" << s1 << std::endl;
	std::cout << "s2的值为:" << s2 << std::endl;
	std::cout << "s3的值为:" << s3 << std::endl;
	std::cout << "s4的值为:" << s4 << std::endl;
	std::cout << "s5的值为:" << s5 << std::endl;
	std::cout << "s6的值为:" << s6 << std::endl;
	std::cout << std::endl;
	/* ---------------------------------- */

	/* ----- 直接初始化和拷贝初始化 ----- */
	//C++语言有几种不同的初始化方式,通过string我们可以清楚地看到在这些初始化方式之间到底
	//有什么区别和联系。如果使用等号(=)初始化一个变量,实际上执行的是拷贝初始化,编译器
	//把等号右侧的初始值拷贝到新创建的对象中去。与之相反,如果不使用等号,则执行的是直接
	//初始化。

	//当初始值只有一个时,使用直接初始化或拷贝初始化都行。如果像上面的s6那样,初始值要用
	//到多个值时,一般来说只能使用直接初始化的方式。
	string s7 = "hiya";  //拷贝初始化
	string s8("hiya");   //直接初始化
	string s9(10, 'c');  //直接初始化,S9的内容是cccccccccc

	//对于用多个值进行初始化的情况,非要用拷贝初始化的方式来处理也不是不可以,不过需要显式
	//地创建一个对象用于拷贝
	string s10 = string(10, 'c');  //拷贝初始化,s10的内容是cccccccccc

	/* ---------------------------------- */

	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fire丶Chicken

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值