C++primerplus书摘1(第一到第四章)

1.getline() get()

下列程序输入输出为

3

3

cin不会丢弃换行符,会把换行符留在输入队列中,所以getline遇到换行符会把换行符替换成'',

所以s是空串。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 int main()
 7 {
 8     string s;
 9     char a;
10     cin>>a;
11     cout<<a<<endl;
12     getline(cin,s);cout<<s;
13     return 0;//3 3
14 }


可以看到第二个getline前没有接受来自第一个getline后的换行符,仍可以正常正常输出,说明第一个getline丢弃了后面的换行符。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 int main()
 7 {
 8     string s;
 9     char a;
10     cin>>a;
11     cout<<a<<endl;
12     cin.get(a);//接受a后面的换行符
13     getline(cin,s);
14     getline(cin,s);
15     cout<<s;
16     return 0;
17 }


输入输出:

3

3

y

u

u

o

o

cin.get()不会丢弃换行符,而是将换行符保留着输入队列

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 int main()
 7 {
 8     string s;
 9     char a;
10     cin>>a;
11     cout<<a<<endl;
12     cin.get(a);//吃掉cin后面的换行符
13     getline(cin,s);//输入s,丢掉最后面的黄海峰
14     cin.get(a);//接受一个新的字符
15     cout<<a<<endl;
16     cin.get(a);
17     cout<<a<<endl;
18     getline(cin,s);
19     cout<<s;
20     return 0;
21 }

结论:

1.getline(cin,s); /cin.getline();读取换行符,并将换行符替换成''并丢弃换行符

2.cin 会把换行符留在输入队列中

3.cin.get(); 读取换行符并替换成'',并不会主动丢弃换行符,会把它保留在输入队列中 

2.当且仅当数值不会为负时,才应使用无符号类型。unsigned

3.整数后面l/L表示long类型,u/U表示unsigned int常量,ul表示unsigned long常量。

4.const限定符 限定了声明的含义

如果在声明常量时没有提供值,则该常量的值将是不确定的,且无法修改。

const比#define好,1.它能够明确指定类型 2.可以使用C++的作用域规则将定义限制在特定的函数或文件中。

原文地址:https://www.cnblogs.com/zuiaimiusi/p/11178526.html