zoukankan      html  css  js  c++  java
  • 串流类(istrstream)输入行为的探讨

    首先,istrstream类的两个构造函数:

      istrstream::istrstream(const char* str);

      istrstream::istrstream(const char* str, int size);

    接着,看下面一段代码:

     1 #include<strstrea.h>
     2 #include<iostream.h>
     3 
     4 void main()
     5 {
     6     char str[100]="I am a student.
    ";
     7     char a;
     8     istrstream  ai(str, 5);
     9 
    10     ai>>a;
    11     cout<<a<<endl;
    12 }

      当size=0时;

        以n表示第十行代码(ai>>a)的重复次数:

        n=1,   输出:I;

        n=2,   输出:a;

        n=3,   输出:m;    

        n=4,   输出:a;

        n=5,   输出:s;

        n=11,  输出:t;

        n=12,  输出:.;

        n=13,  输出:.;     //这位字符是' ' ;(仅仅看除去空格、制表符、换行等后的字符)

        n=14,  输出:.;  //这位字符是’ ‘ ;

        n=15,  输出:.;  //这位字符是'' ;

        n=16,  输出:.;  //这位字符是'' ;

      当size>0时;

    1. size = 3;

          n=1('I');

          n=2('a');

          n=3('a');

          n=4('a');

        2.  size = 5;

          n=3('m');

          n=4('m');

          n=5('m');

        3.  size = 6;

          n=3('m');

          n=4('a');

          n=5('a');

          n=6('a');

    综上:

    1. 不论size是否大于0,二者都只输入除去空格、回车、制表符、换行等以后的字符;如果输入中遇到空格等一类字符,程序自动以后面第一个非空格一类字符代替(对于size>0的情况,这句话指size还没有起作用时候);
    2. 当size = 0, 当输入次数大于有效字符(除去空格一类字符)数时,后面的输入保持不变,维持在最有一个有效字符的输入状态;
    3. 当size>0时,
      1. size控制位数(此“位数”包括所有字符,甚至是空格、回车、制表符、换行等符号),当输入次数超过size后,size肯定就开始发挥限制输入的作用了;
      2. size 可能在输入次数小于size大小的时候就开始发挥限制作用了;("I am a student." , 此情况,如果size = 5, 那么在第三次输入得到'm'后size 就开始发挥输入限制作用了)
      3. 当输入被size限制后,后面再输入的字符维持在最后一个有效字符的状态;
  • 相关阅读:
    数据库连接(1)-从JDBC到MyBatis
    基于 abp vNext 和 .NET Core 开发博客项目
    基于 abp vNext 和 .NET Core 开发博客项目
    正则表达式位置匹配
    正则表达式字符匹配
    2019年终总结
    Win10 1903 运行安卓模拟器蓝屏解决方案
    我已经看到了,撤回也没用了(PC微信防撤回补丁)
    DOCKER 学习笔记1 认识docker
    Java 中级 学习笔记 2 JVM GC 垃圾回收与算法
  • 原文地址:https://www.cnblogs.com/richard-c-java/p/3292528.html
Copyright © 2011-2022 走看看