• 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++的作用域规则将定义限制在特定的函数或文件中。

  • 相关阅读:
    学习ios键盘和textfield之间操作体会
    关于Cannot assign to 'self' outside of a method in the init family解决方法
    "this class is not key value coding-compliant for the key ..."问题的解决
    在编译oc中protocol时出现的错误
    关于oc中出现的typedef的用法/定义函数指针
    VC++、MFC、COM和ATL的区别
    leetcode : Spiral Matrix II
    leetcode : Length of Last Word [基本功]
    leetcode : triangle
    leetcode : Insert Interval
  • 原文地址:https://www.cnblogs.com/zuiaimiusi/p/11178526.html
Copyright © 2020-2023  润新知