1.变量是一个具有名称的对象,对象则是计算机的一段具有类型的内存空间。有些对象可能没有名称。
2.局部变量有限的生存期是区分变量和对象的一个重要依据。
3.对象类型会提供接口,可以对该类型所作的操作
4.>>运算符从标准输入中读进一个字符串,然后把读到的值存储到name的对象中。读取时会略去输入开始时碰到的空白字符(空白、制表键、回退键或换行符),然后连续的把字符读到name变量中,直到遇到了另一个空白字符或者文件结束标记为止。
std::cin >> name;
5.缓冲区?输入输出库会把它的输出保存在缓冲区中,为了减少对每一个输出请求都做一个写操作的系统开销,库使用了缓冲区来累计待写到输出装置的字符,而是在有必要的时候,它才会把缓冲区的内容写到输出装置中从而刷新缓冲区,这样他就可以把几个输出操作合并到一个单独的写操作中了。
三件事情会导致系统刷新缓冲区:
1)缓冲区满了;
2)请求库从标准输入流中读取数据;
3)我们明确要求刷新缓冲区。例如:std::endl
std::cout << std::endl;
运行长时间的程序应该在适当的时刻刷新缓冲区,防止输出可能会长时间的滞留在缓冲区中,从而导致可能会等待很久才能看到程序的程序所写的输出。
#include <iostream>
#include <string>
int main()
{
std::cout << "请输入名字:";
std::string a;
std::cin >> a;
size_t size = a.size();//返回字节长度,所以输入中文不会有问题
std::string third = "* Hello " + a + "! *";
std::string first(third.size(), '*'); //返回字节长度,所以输入中文不会有问题
std::string space(third.size()-2, ' ');
std::string second = "*" + space + "*";
std::cout << first << std::endl;
std::cout << second << std::endl;
std::cout << third << std::endl;
std::cout << second << std::endl;
std::cout << first << std::endl;
}
7.<<、+是左结合
8.字符直接量‘a’的类型是内建类型char,字符串直接量较为复杂