• C++学习之 —— 输入输出


     案例:输入任意空格和数字,输出其中的数字之和。

    #include <iostream>
    
    using namespace std;
    
    int main() {
        int sum = 0;
    
        cout << "Please Input space or number:";
    
        int i = 0;
        while( cin >> i) {
            sum += i;
            while(cin.peek() == ' ') {
                cin.get();
            }
            if( cin.peek() == '
    ') {
                break;
            }
        }
        cout << "The result is " << sum << endl;
        return 0;
    }

    目录

     1. 标准输出流(cout)

    2. 标准输入流(cin)

    3. 输入流(cin)方法

    1、cin

    2、cin.get() —— 接收字符

    3、cin.getline()

    4、getline()

    5、gets()

    6、getchar()

    4. 输出流(cout)格式控制



    C++ 的 I/O 发生在流中,流是字节序列。

    • 标准输出流(cout)
      • 如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。
      • cout 是与流插入运算符 << 结合使用的
    • 标准输入流(cin)

      • 如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。
      • cin 是与流提取运算符 >> 结合使用的

            

                        图1 流的输入和输出 

     1. 标准输出流(cout)

    cout  <<  表达式1  <<  表达式2  <<……<<  表达式n;

    cout << "This is "  //注意行末尾无分号
    << "a C++ "
    << "program."
    << endl; //语句最后有分号

    cout << "This is "; //语句末尾有分号
    cout  << "a C++ ";
    cout  << "program.";
    cout << endl;

    注意 : 不能用一个插入运算符“<<”插入多个输出项,如:
        cout<<a,b,c; //错误,不能一次插入多项 

    2. 标准输入流(cin)

    从键盘输入三个数,赋值给a, b, c, 有以下三种方法:

    cin >> 表达式1 >> 表达式2 >> 表达式3 >> 表达式4;

       cin >> a //注意行末尾无分号
       >> b //这样写可能看起来清晰些
       >> c
       >> d;

       cin >> a;
       cin >> b;
       cin >> c;
       cin >> d;

    . 输入流(cin)方法

    1、cin

    •  用法1:最基本,也是最常用的用法,输入一个数字:
    •  用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束
    #include <iostream>
    using namespace std;
    main ()
    {
    char a[20];
    cin>>a;
    cout<<a<<endl;
    }
    
    //   输入:jkljkl jkljkl       //遇空格结束
    //   输出:jkljkl

    2、cin.get() —— 接收字符

    用法1: cin.get(字符变量名)

     1 #include <iostream>
     2 using namespace std;
     3 main ()
     4 {
     5 char ch;
     6 ch=cin.get();               //或者cin.get(ch);
     7 cout<<ch<<endl;
     8 }
     9 
    10 // 输入:jljkljkl
    11 // 输出:j

    用法2: cin.get(字符数组名, 接收字符数目) 

     1 #include <iostream>
     2 using namespace std;
     3 int main ()
     4 {
     5     char a[20];     // 字符串可以保存19位,最后一位是0
     6     cin.get(a,18);  // 取其中的前17位
     7     cout<<a<<endl;
     8 }
     9 
    10 // 输入:jkl jkl jkl
    11 // 输出:jkl jkl jkl
    12 
    13 // 输入:ythrdhtgiludfgvkhlfgxdzfxcgvhkjfxdxcvjhkhgbx 
    14 // 输出:ythrdhtgiludfgvkh       (接收17个字符+1个'')

    3、cin.getline()

    cin.getline(字符串,接受数目,结束字符串)   —— 接受一个字符串,可以接收空格 

     1 #include<iostream>
     2 #include<string>
     3 using namespace std;
     4 
     5 int main ()
     6 {
     7     char m[3][20];
     8     for(int i=0;i<3;i++)
     9     {
    10         cout<<"
    请输入第"<<i+1<<"个字符串:"<<endl;
    11         cin.getline(m[i],20, 'a');
    12     }
    13 
    14     cout<<endl;
    15     for(int j=0;j<3;j++)
    16         cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;
    17 
    18 }
    
    /* 运行结果
    请输入第1个字符串:
    111a
    请输入第2个字符串:
    222a
    请输入第3个字符串:
    333a
    
    输出m[0]的值:111
    输出m[1]的值:222
    输出m[2]的值:333
    #####
    */

    4、getline()

     和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,需声明 #include<string>

    5、gets()

     类似cin.getline(),属于string流,

    6、getchar()

     getchar()是C语言的函数,C++也可以兼容,但是尽量不用或少用;

    4. 输出流(cout)格式控制

    ios::dec 以10进制表示整数
    ios::hex 以16进制表示整数
    ios::oct 以8进制表示整数
    ios::showbase 为整数添加一个表示其进制的前缀
    ios::internal 在符号位和数值的中间插入需要数量的填充字符以使串两端对齐
    ios::left 在串的末尾插入填充字符以使串居左对齐
    ios::right 在串的前面插入填充字符以使串居右对齐
    ios::boolalpha 将bool类型的值以true或flase表示,而不是1或0
    ios::fixed 将符点数按照普通定点格式处理(非科学计数法)
    ios::scientific 将符点数按照科学计数法处理(带指数域)
    ios::showpoint 在浮点数表示的小数中强制插入小数点(默认情况是浮点数表示的整数不显示小数点)
    ios::showpos 强制在正数前添加+号
    ios::skipws 忽略前导的空格(主要用于输入流,如cin)
    ios::unitbuf 在插入(每次输出)操作后清空缓存
    ios::uppercase 强制大写字母

  • 相关阅读:
    failed: unacceptable content-type: text/html
    iOS button点击更换图片
    支付宝ios SDK官方下载页面
    xcode6 中使用OC代码时,在NSObject的子类中报错
    CocoaPods安装和使用教程
    Mac 下安装Ruby环境
    iOS .a与.framewofk
    Couldn't find preset "es2015" relative to directory问题解决
    yarn依赖管理工具的使用
    java.io.IOException: Could not delete path 'D:mycode eactnativeSecondTestandroidappuildgeneratedsource eleaseandroidsupportv7
  • 原文地址:https://www.cnblogs.com/geoffreyone/p/9899743.html
Copyright © 2020-2023  润新知