C++基础学习
//cin拿空白字符,换行符和结束符作为读入字符结束的标志
//cin优先读取缓存区内容;读取内容首个字符有空白字符的往往跳过(回车换行符和空格字符)空白字符。
//cin读取内容时,第一个为空白字符往往选择跳过;后面出现空白字符往往表示终止
//cin在缓存区里遇到空白字符代表终止(空白字符包括:空格,制表符和回车换行符)
//空白字符≠空字符,空字符是“\0”
//cin在遇到回车换行符时候,cin是不会把回车换行符丢弃的
//cin.get()变体:被调用后可以读取下一个字符,因此可以用来处理换行符,为读取下一行输入做准备
#include <iostream>
int main()
{
using namespace std;
const int ArraySize = 20;
char name[ArraySize];
char dessert[ArraySize];
cout << "Enter your name:\n";
cin.getline(name,ArraySize).getline(dessert,ArraySize);
//cout << "Enter your favourite dessert\n";
//cin.get(dessert,ArraySize).get() ;
cout << "I have some delicious " << dessert << " for you, " << name << ".\n";
return 0;
}
//读取整体(携带空格的完整输入--->读取一行,及面向行读取而非面向单词读取。)
//cin.getline()与cin.get(storage,size)两个函数都能读取一行的输入,直到达到换行符。size里面有一个'\0',函数最多读取size-1个字符
//getline丢弃换行符,get将换行符保留在输入序列
//getline()函数每次读取一行,通过换行符来确定行尾,但是不保存换行符,相反,在存储字符串时,他用空字符来替换换行符。
//getline函数终止标志:Ⅰ读取指定字符,Ⅱ遇到换行符终止;getline函数捕获计算机输入字符串,丢弃结尾换行符,补充"\0"存储到字符串数组中;Ⅲgetline读取到最后的回车换行符会丢弃回车换行符
//面向行的输入get()
//往往在cin.get(arrayname,arraysize)后面的下一行加上一行cin.get()
//cin.get()往往用来捕获上一个cin.get(name,size)留下的回车换行符。(习惯)
//往往cin.get()书写两行:第二行cin.get()往往用来消耗回车换行符
//!!!cin.get(name,size).get()为什么可以连写???
//因为cin.get(arrayname,size)的返回值是一个cin对象,所以身为cin对象,同时可以继续调用对象内的成员函数
//cin.get(parameter)的返回值是一个cin对象!!!
//同时get是一个成员函数,成员函数需要通过类的对象去调用,所以,cin.get(parameters).get()可以连写
//cin.get()当用来读取空行后,将设置失效位(failbit),这就意味着接下来的输入被阻断,但是仍然可以用cin.clear()来恢复输入
//cin.clear()往往用于恢复输入,不论是由getline还是get设置的失效位
//cin.getline()看到换行符后,如果是空行,往往将一个空字符赋值给参数地址address。(重点消耗回车换行符)