【记录】Accelerated C++:Practical Programming by Example第1章:使用字符串


#include<iostream>
#include<string>   
int main()
{
	std::cout<<"Please enter your name:";
	std::string name;                            //定义变量name
	std::cin>>name;                              //把姓名读进name
	std::cout<<"Hello,"<<name<<"!"<<std::endl;
	return 0;
}

变量是一个具有名称的对象,对象则是一段具有类型的内存空间,有些对象没有名称。

例子中,变量名是name,类型是std::string ,它是标准库string的一部分,所以要#include<string>

变量name在一个函数体内,所以是一个局部变量,当程序运行到 } ,临时变量name会被销毁,同时内存被系统回收。

std::cin>>name;  读取时会忽略空白字符




为姓名装框:

思路:读取姓名Estragon,输出问候语,作为框体内的语句。再新建一个和问候语等长的空白字符,在空白字符的左右两边各加一个*,作为输出的第二行。再新建一个和第二行等长的变量,全部用*填充,作为输出语句的第一行。


#include<iostream>
#include<string>
int main()
{
	std::cout<<"Please enter your first name:";
	std::string name;
	std::cin>>name;

	const std::string greeting="Hello,"+name+"!";
	const std::string spaces(greeting.size(),' ');  
	const std::string second ="*"+spaces+"*";       
	const std::string first(second.size(),'*');
	//std::cout<<std::endl;   //这一句话可以形成一个空行
	std::cout<<first<<std::endl;
	std::cout<<second<<std::endl;
	std::cout<<"*"<<greeting<<"*"<<std::endl;
	std::cout<<second<<std::endl;
	std::cout<<first<<std::endl;
	return 0;
}

首先程序会要求输入姓名,将姓名读到临时变量name中,然后在定义一个变量greeting来格式化
Format输出信息。再定义一个临时变量spaces ,这个变量包含与greeting中字符一样多的空格。
再定义一个临时变量second,这个变量相当于spaces的左右两边各加入一个字符*,作为第二、四行。

1.对于变量second的赋值,用符号=,其后是所需内容
2.对于变量second的赋值,用符号+连接不同的字符串。
3.const(常量)
4.运算符<<的结合律。<<是左结合,std::cout<<s<<t和(std::cout<<s)<<t等价。运算符+也是左结合。

分析:

	const std::string spaces(greeting.size(),' ');  

定义一个名为spaces的变量,类型为std::string, greeting.size()是一个调用成员函数的例子,对象greeting有一个size函数,我们用greeting.size()获得一个整数,代表greeting的长度。‘  ’ 是一个字符直接量,(注意:字符串是用双引号,学会区别),当然,现在可以使用便于理解的例子:‘\n’  '\t'  '\"'

例子:

std::string stars(10,'*');

定义一个名为stars的变量,类型为std::string,stars的长度stars.size(),即stars的size函数值为10,stars本身就是由10个*组成。

1.3 小结

std::string z(n,c);    定义一个类型为string的变量z,把z初始化为n个字符c的字符串。 注意:c必须是字符。

std::string z=s;       定义一个类型为string 的变量z,把z初始化为包含s的字符的一个复制。这里s可以是字符串或字符串直接量。


变量定义的三种形式:

std::string hello="hello";   用明确的初始化值来定义变量

std::string hell0(100,'*');   用类型std::string和给定的表达式(100,'*')来构造变量

std::string name;                定义一个类型为std::string 的变量,不对其进行初始化

习题:

输出语句一行一行的输出,所以先输出1 ,另起一行输出2.



#include<iostream>
#include<string>
int main()
{
	std::cout<<"What is your name?";
	std::string name;
	std::cin>>name;
	std::cout<<"Hello,"<<name<<std::endl<<"And what is yours?";
	std::cin>>name;
	std::cout<<"Hello,"<<name<<",nice to meet your too!"<<std::endl;
	return 0;
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值