#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;
}